html_entity_decode(), в противоположность функции
htmlentities(), Преобразует HTML сущности в строке
string в соответствующие символы.
Необязательный аргумент quote_style позволяет
указать способ обработки 'одиночных' и "двойных" кавычек. Значением
этого аргумента может быть одна из трех следующих констант (по
умолчанию ENT_COMPAT):
Таблица 1. Константы quote_style
Имя константы
Описание
ENT_COMPAT
Преобразуются двойные кавычки, одиночные остаются без изменений.
ENT_QUOTES
Преобразуются и двойные, и одиночные кавычки.
ENT_NOQUOTES
И двойные, и одиночные кавычки остаются без изменений.
Необязательный третий аргумент charset
определяет кодировку, используемую при преобразовании. По умолчанию
используется кодировка ISO-8859-1.
Начиная с PHP 4.3.0 поддерживаются следующие кодировки.
Таблица 2. Поддерживаемые кодировки
Кодировка
Псевдонимы
Описание
ISO-8859-1
ISO8859-1
Западно-европейская Latin-1
ISO-8859-15
ISO8859-15
Западно-европейская Latin-9. Добавляет знак евро, французские и
финские буквы к кодировке Latin-1(ISO-8859-1).
UTF-8
8-битная Unicode, совместимая с ASCII.
cp866
ibm866, 866
Кириллическая кодировка, применяемая в DOS.
Поддерживается в версии 4.3.2.
cp1251
Windows-1251, win-1251, 1251
Кириллическая кодировка, применяемая в Windows.
Поддерживается в версии 4.3.2.
cp1252
Windows-1252, 1252
Западно-европейская кодировка, применяемая в Windows.
KOI8-R
koi8-ru, koi8r
Русская кодировка.
Поддерживается в версии 4.3.2.
BIG5
950
Традиционный китайский, применяется в основном на Тайване.
Замечание:
Не перечисленные выше кодировки не поддерживаются, и вместо них
применяется ISO-8859-1.
Пример 1. Декодирование HTML сущностей
<?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
// в версиях до PHP 4.3.0 можно сделать так: function unhtmlentities($string) { $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
?>
Замечание:
Может показаться странным, что результатом вызова
trim(html_entity_decode(' ')); не является пустая строка
Причина том, что ' ' преобразуется не в символ с
ASCII-кодом 32 (который удаляется функцией trim()),а в символ с
ASCII-кодом 160 (0xa0) в принимаемой по умолчанию кодировке ISO-8859-1.