Description
string
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 Name | Description |
---|
ENT_COMPAT | Will convert double-quotes and leave single-quotes alone. |
ENT_QUOTES | Will convert both double and single quotes. |
ENT_NOQUOTES | Will 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
Charset | Aliases | Description |
---|
ISO-8859-1 | ISO8859-1 |
Western European, Latin-1
|
ISO-8859-15 | ISO8859-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.
|
cp866 | ibm866, 866 |
DOS-specific Cyrillic charset.
This charset is supported in 4.3.2.
|
cp1251 | Windows-1251, win-1251, 1251 |
Windows-specific Cyrillic charset.
This charset is supported in 4.3.2.
|
cp1252 | Windows-1252, 1252 |
Windows specific charset for Western European.
|
KOI8-R | koi8-ru, koi8r |
Russian. This charset is supported in 4.3.2.
|
BIG5 | 950 |
Traditional Chinese, mainly used in Taiwan.
|
GB2312 | 936 |
Simplified Chinese, national standard character set.
|
BIG5-HKSCS | |
Big5 with Hong Kong extensions, Traditional Chinese.
|
Shift_JIS | SJIS, 932 |
Japanese
|
EUC-JP | EUCJP |
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
$orig = "I'll \"walk\" the <b>dog</b> now";
$a = htmlentities($orig);
$b = html_entity_decode($a);
echo $a; // I'll "walk" the <b>dog</b> now
echo $b; // I'll "walk" the <b>dog</b> now
// For users prior to PHP 4.3.0 you may do this:
function unhtmlentities($string)
{
// replace numeric entities
$string = preg_replace('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $string);
$string = preg_replace('~&#([0-9]+);~e', 'chr(\\1)', $string);
// replace literal entities
$trans_tbl = get_html_translation_table(HTML_ENTITIES);
$trans_tbl = array_flip($trans_tbl);
return strtr($string, $trans_tbl);
}
$c = unhtmlentities($a);
echo $c; // I'll "walk" the <b>dog</b> now
?> |
|
Note:
You might wonder why trim(html_entity_decode(' ')); doesn't
reduce the string to an empty string, that's because the ' '
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().