В HTML некоторые символы имеют специальное значение и для
сохранения своего значения должны быть преобразованы в HTML-сущности.
Эта функция возвращает строку, над которой проведены некоторые из
таких преобразований. Этих преобразований достаточно для большинства
задач веб-программирования. Если вам нужно преобразовать все
возможные сущности, используйте htmlentities().
Эта функция полезна при отображении данных, введенных пользователем,
которые могут содержать нежелательные HTML тэги, например в форуме
или гостевой книге.
Производятся следующие преобразования:
'&' (амперсанд) преобразуется в '&'
'"' (двойная кавычка) преобразуется в '"' в режиме ENT_NOQUOTES
is not set.
"'" (одиночная кавычка) преобразуется в ''' только в
режиме ENT_QUOTES.
Битовая маска из нижеуказанных флагов, определяющих режим обработки
кавычек, некорректных кодовых последовательностей и используемый
тип документа. По умолчанию используется
ENT_COMPAT | ENT_HTML401.
Доступные значения параметра flags
Название константы
Описание
ENT_COMPAT
Преобразует двойные кавычки, одинарные кавычки не изменяются.
ENT_QUOTES
Преобразует как двойные, так и одинарные кавычки.
ENT_NOQUOTES
Оставляет без изменения как двойные, так и одинарные кавычки.
ENT_IGNORE
Молча отбрасывает некорректные кодовые последовательности
вместо возврата пустой строки.
Данная возможность предоставляется в целях обратной совместимости,
избегайте ее использования, т.к. она может внести уязвимости
в ваш код.
ENT_SUBSTITUTE
Заменяет некорреткные кодовые последовательности символом замены
Юникода U+FFFD в случае использования UTF-8 и
&#FFFD; при использовании другой кодировки, вместо возврата
пустой строки.
ENT_DISALLOWED
Заменяет кодовые последовательности, несоответствующие указанному
типу документа символом замены Юникода U+FFFD в случае использования
UTF-8 и &#FFFD; при использовании другой кодировки.
ENT_HTML401
Обработка кода в соответствии с HTML 4.01.
ENT_XML1
Обработка кода в соответствии с XML 1.
ENT_XHTML
Обработка кода в соответствии с XHTML.
ENT_HTML5
Обработка кода в соответствии с HTML 5.
charset
Указывает кодировку, используемую для преобразования.
Кодировкой по умолчанию является ISO-8859-1.
Для целей этой функции кодировки
ISO-8859-1, ISO-8859-15,
UTF-8, cp866,
cp1251, cp1252 и
KOI8-R являются практически эквивалентными, предполагая
то, что сама строка string содержит корректные символы
в указанной кодировке, то символы, изменяемые
htmlspecialchars(), останутся на тех же местах
во всех этих кодировках.
Начиная с PHP 4.3.0 поддерживаются следующие кодировки.
Поддерживаемые кодировки
Кодировка
Псевдонимы
Описание
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
Традиционный китайский, применяется в основном на Тайване.
Пустая строка активирует режим определения кодировки из файла
скрипта (Zend multibyte),
default_charset и текущей
локали (см. nl_langinfo() и
setlocale()), в указанном порядке.
Не рекомендуется к использованию.
Замечание:
Остальные кодировки не поддерживаются, вместо них будет применена
кодировка по умолчанию и сгенерировано предупреждение.
double_encode
Если параметр double_encode выключен, то PHP
не будет преобразовывать существующие html-сущности, по умолчанию
преобразуется все без ограничений.
Если входная строка string содержит
неверную последовательность символов в указанной кодировке
charset и флаг ENT_IGNORE
не установлен, то htmlspecialchars()
вернет пустую строку.
Список изменений
Версия
Описание
5.4.0
Добавлены константы ENT_SUBSTITUTE, ENT_DISALLOWED,
ENT_HTML401, ENT_XML1,
ENT_XHTML и ENT_HTML5.
Обратите внимание, что функция не производит других преобразований
кроме описанных выше. Для преобразования всех HTML сущностей
используйте htmlentities().
Смотрите также
get_html_translation_table() - Возвращает таблицу преобразований, используемую функциями
htmlspecialchars и htmlentities