Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community!
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trial

Craig Salmond
Courses Plus Student 7,438 Pointshtmlspecialchars() Not Outputting Entities
I've been trying to get the htmlspecialchars() function to escape output in the Enhancing a Simple PHP Application. No matter what I do, I can't get it to output HTML entities and I think I'm going crazy because of it! As a simple test, I created a variable and I try to echo it right after that.
<?php
$someVar = "<p>Here's a <b>bold</b> tag inside a <em>paragraph</em>tag</p>";
echo htmlspecialchars($someVar);
?>
Visually I see the output exactly as it's declared in teh $someVar assignment and when I View Source, it still looks exactly the same as I declared it! Am I missing something?
3 Answers

Craig Salmond
Courses Plus Student 7,438 PointsIn case anybody sees this, I thought I'd post the answer as I recently figured out what I was doing wrong. When I was inspecting the element, Safari by default will show you the HTML nodes view, not the actual source code. In the HTML nodes view, the HTML entities are not displayed but converted into the the corresponding characters (i.e. <
= <
) but in the actual source code, the actual HTML entities are present. So if you have this issue, just be sure that you're looking at the source code and not the node view.

Chris Shaw
26,663 PointsI tested the above on my local server and it worked as expected, could you explain a bit about your dev environment. E.g. PHP version, Apache or IIS etc...

Craig Salmond
Courses Plus Student 7,438 PointsI think I may have found an answer, in case anybody else runs into this. I used this as the html string below and then I used the var_dump() method on that string.
// count is 37 without encoding
$clean = htmlspecialchars('</textarea><p>Testing <b>BOLD</b></p>');
// output on screen
// string(67) "</textarea><p>Testing <b>BOLD</b></p>"
// output encoded (67 chars)
// </textarea><p>Testing <b>BOLD</b></p>
The 67 in the line above is what the character count is when the string is encoded. I can't get Chrome or Safari to show the actual HTML entities, but at least I'm not crazy, or at least, I think I'm not crazy
Craig Salmond
Courses Plus Student 7,438 PointsCraig Salmond
Courses Plus Student 7,438 PointsI'm using:
Apache/2.2.25 (Unix) mod_ssl/2.2.25 OpenSSL/0.9.8y DAV/2 PHP/5.5.3 PHP Version 5.5.3 MAMP (OS X — Mavericks)
One unique thing about my setup is that I have my entire MAMP folder inside my Dropbox with a symbolic link to the MAMP folder in my Dropbox. As far as I can tell, it hasn't caused any problems, though. I could be wrong about that