html_entity_decode

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

html_entity_decodeПреобразовывает HTML-сущности в символы

Описание

html_entity_decode(string$string, int$flags = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, ?string$encoding = null): string

Функция html_entity_decode() выполняет преобразование обратное функции htmlentities(), разница в том, что эта функция наоборот — преобразовывает HTML-сущности в строке string в символы.

Точнее, эта функция декодирует сущности (включая числовые), которые а) допускает тип документа — то есть, для XML-документов функция не декодирует именованные сущности, которые определяет схема DTD и б) символ или символы которых входят в кодированный набор символов, который связан с выбранной кодировкой, и которые разрешает выбранный тип документа. Остальные сущности функция не изменяет.

Список параметров

string

Входная строка.

flags

Битовая маска из следующих флагов, которые определяют, как обрабатывать кавычки и какой тип документа использовать. Маска по умолчанию: ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401.

Константы flags
Имя константыОписание
ENT_COMPATПреобразовывает двойные кавычки, одинарные кавычки не изменяются.
ENT_QUOTESПреобразовывает как двойные, так и одинарные кавычки.
ENT_NOQUOTESОставляет без изменения как двойные, так и одинарные кавычки.
ENT_SUBSTITUTE Заменяет неправильные последовательности кодовых единиц символом замены Юникода вместо возврата пустой строки: U+FFFD для строк в кодировке UTF-8 и &#FFFD; для строк в других кодировках.
ENT_HTML401 Обрабатывает код в соответствии со стандартом HTML 4.01.
ENT_XML1 Обрабатывает код по правилам стандарта XML 1.
ENT_XHTML Обрабатывает код по правилам стандарта XHTML.
ENT_HTML5 Обрабатывает код по правилам стандарта HTML 5.
encoding

Необязательный аргумент, который определяет кодировку для преобразования символов.

Функция примет за значение по умолчанию для параметра encoding значение опции конфигурации default_charset, если параметр опустили.

Хотя технически этот аргумент необязателен, настоятельно рекомендуется указать правильное значение для кода, на случай если значение опции default_charset окажется неправильным для входных данных.

Функция поддерживает следующие кодировки:

Кодировки, которые поддерживает функция
КодировкаПсевдонимыОписание
ISO-8859-1ISO8859-1 Западно-Европейская кодировка с набором символов Latin-1.
ISO-8859-5ISO8859-5 Кириллическая кодировка с набором символов Latin/Cyrillic; применяют редко.
ISO-8859-15ISO8859-15 Западно-Европейская кодировка с набором символов Latin-9. Добавляет к набору символов Latin-1 кодировки ISO-8859-1 знак евро, французские и финские буквы.
UTF-8  ASCII-совместимая многобайтовая 8-битная кодировка Unicode.
cp866ibm866, 866 Кириллическая кодировка, которую применяют в семействе операционных систем DOS.
cp1251Windows-1251, win-1251, 1251 Кириллическая кодировка, которую применяют в операционных системах Windows.
cp1252Windows-1252, 1252 Западно-Европейская кодировка, которую применяют в операционных системах Windows.
KOI8-Rkoi8-ru, koi8r Русская кодировка.
BIG5950 Кодировка с набором символов Traditional Chinese (Традиционный китайский), которую применяют в основном на Тайване.
GB2312936 Стандартная национальная кодировка с набором символов Simplified Chinese (Упрощённый китайский).
BIG5-HKSCS  Кодировка Big5 с расширениями для Гонконга с набором символов Traditional Chinese (Традиционный китайский).
Shift_JISSJIS, SJIS-win, cp932, 932 Японская кодировка.
EUC-JPEUCJP, eucJP-win Японская кодировка.
MacRoman  Кодировка, которую использовала операционная система Mac OS.
''  Пустая строка активирует режим определения кодировки из файла скрипта (Zend multibyte), директивы default_charset и текущей локали (смотрите описание функций nl_langinfo() и setlocale()), в перечисленном порядке. Не рекомендуется использовать.

Замечание: Другие кодировки функция не распознаёт. Вместо других кодировок функция будет использовать кодировку по умолчанию и выдаст предупреждение.

Возвращаемые значения

Функция возвращает декодированную строку.

Список изменений

ВерсияОписание
8.1.0 Значение по умолчанию для параметра flags изменили с ENT_COMPAT на ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401.
8.0.0 Теперь параметр encoding принимает значение null.

Примеры

Пример #1 Декодирование HTML-сущностей

<?php

$orig
= "I'll \"walk\" the <b>dog</b> now";

$a = htmlentities($orig);

$b = html_entity_decode($a);

echo
$a; // I'll &quot;walk&quot; the &lt;b&gt;dog&lt;/b&gt; now

echo $b; // I'll "walk" the <b>dog</b> now

?>

Примечания

Замечание:

Кажется странным, что результатом вызова функции trim(html_entity_decode('&nbsp;')); не становится пустая строка. Причина в том, что сущность «&nbsp;» преобразовывается не в символ с ASCII-кодом 32, который функция trim() удаляет, а в символ с ASCII-кодом 160 (0xa0) в принимаемой по умолчанию кодировке ISO-8859-1.

Смотрите также

  • htmlentities() - Преобразовывает возможные символы в HTML-сущности
  • htmlspecialchars() - Преобразовывает специальные символы в HTML-сущности
  • get_html_translation_table() - Возвращает таблицу преобразований, используемую функциями htmlspecialchars и htmlentities
  • urldecode() - Декодирование URL-кодированной строки
To Top