36
votes

this may seem like a simple problem but I couldn't find it in the archives.

how does one reverse the effects of htmlspecialchars?

I tried something like this:

$trans_tbl = get_html_translation_table (HTML_ENTITIES);
$trans_tbl = array_flip ($trans_tbl);
$html = strtr ($html, $trans_tbl);

but it didn't work. is there a simple way to do this?

4
Read the manual, it will tell you all functions that have something to do with the one you are looking at in the 'see also' section this is that section for htmlspecialchars() - Manuel
This question appears to be off-topic because it can be found in the manual. - Ja͢ck

4 Answers

78
votes

Use htmlspecialchars_decode()

<?php
$str = "<p>this -&gt; &quot;</p>\n";

echo htmlspecialchars_decode($str);

// note that here the quotes aren't converted
echo htmlspecialchars_decode($str, ENT_NOQUOTES);
?>

Reference - PHP Official Doc

4
votes

You need htmlspecialchars_decode(). See PHP docu on this.

$html = htmlspecialchars_decode( $html, ENT_NOQUOTES );
4
votes

example :

echo htmlspecialchars_decode(htmlspecialchars('your "strange" text with characters like !"/$%?&*'))

it will echo : your "strange" text with characters like !"/$%?&*

this is an example of encode/decode. it works.

0
votes

From what I understood, you need htmlspecialchars_decode - Docu