PHP html_entity_decode function

html_entity_decode

(PHP 4 >= 4.3.0, PHP 5)

html_entity_decode --
Convert all HTML entities to their applicable characters
Descriptionstring html_entity_decode ( string string [, int quote_style [, string charset]] )

html_entity_decode() is the opposite of
htmlentities() in that it converts all HTML entities
to their applicable characters from string.

The optional second quote_style parameter lets
you define what will be done with 'single' and "double" quotes. It takes
on one of three constants with the default being
ENT_COMPAT:

Table 1. Available quote_style constants

Constant NameDescriptionENT_COMPATWill convert double-quotes and leave single-quotes alone.ENT_QUOTESWill convert both double and single quotes.ENT_NOQUOTESWill leave both double and single quotes unconverted.

The ISO-8859-1 character set is used as default for the optional third
charset. This defines the character set used in
conversion.

Following character sets are supported in PHP 4.3.0 and later.

Table 2. Supported charsets

CharsetAliasesDescriptionISO-8859-1ISO8859-1 Western European, Latin-1
ISO-8859-15ISO8859-15 Western European, Latin-9. Adds the Euro sign, French and Finnish
letters missing in Latin-1(ISO-8859-1).
UTF-8 ASCII compatible multi-byte 8-bit Unicode.
cp866ibm866, 866 DOS-specific Cyrillic charset.
This charset is supported in 4.3.2.
cp1251Windows-1251, win-1251, 1251 Windows-specific Cyrillic charset.
This charset is supported in 4.3.2.
cp1252Windows-1252, 1252 Windows specific charset for Western European.
KOI8-Rkoi8-ru, koi8r Russian. This charset is supported in 4.3.2.
BIG5950 Traditional Chinese, mainly used in Taiwan.
GB2312936 Simplified Chinese, national standard character set.
BIG5-HKSCS Big5 with Hong Kong extensions, Traditional Chinese.
Shift_JISSJIS, 932 Japanese
EUC-JPEUCJP Japanese

Note:
Any other character sets are not recognized and ISO-8859-1 will be used
instead.


Note:
This function doesn't support multi-byte character sets in PHP < 5.


Example 1. Decoding HTML entities

PHP:
  1. $orig = "I'll \"walk\" the &lt;b&gt;dog&lt;/b&gt; now";
  2.  
  3. $a = htmlentities($orig);
  4.  
  5.  
  6. echo $a; // I'll &amp;quot;walk&amp;quot; the &amp;lt;b&amp;gt;dog&amp;lt;/b&amp;gt; now
  7.  
  8. echo $b; // I'll "walk" the &lt;b&gt;dog&lt;/b&gt; now
  9.  
  10.  
  11. // For users prior to PHP 4.3.0 you may do this:
  12. function unhtmlentities($string)
  13. {
  14.     // replace numeric entities
  15.     $string = preg_replace('~&amp;#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $string);
  16.     $string = preg_replace('~&amp;#([0-9]+);~e', 'chr("\\1")', $string);
  17.     // replace literal entities
  18.     $trans_tbl = get_html_translation_table(HTML_ENTITIES);
  19.     $trans_tbl = array_flip($trans_tbl);
  20.     return strtr($string, $trans_tbl);
  21. }
  22.  
  23. $c = unhtmlentities($a);
  24.  
  25. echo $c; // I'll "walk" the &lt;b&gt;dog&lt;/b&gt; now

Note:
You might wonder why trim(html_entity_decode('&nbsp;')); doesn't
reduce the string to an empty string, that's because the '&nbsp;'
entity is not ASCII code 32 (which is stripped by
trim()) but ASCII code 160 (0xa0) in the default ISO
8859-1 characterset.


See also htmlentities(),
htmlspecialchars(),
get_html_translation_table(),
and urldecode().

These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • Netvouz
  • DZone
  • Reddit
  • Furl
  • NewsVine
  • Simpy
  • Slashdot
  • Spurl
  • StumbleUpon
  • YahooMyWeb
  • TailRank

Home | PHP Functions | PHP html_entity_decode function