В предыдущем разделе теги просто удалялись из текста. Но что делать, если требуется отобразить текст, содержащий HTML-теги, но при этом ещё и обеспечить безопасность приложения? В этом случае уместно использовать функцию htmlentities, которая осуществляет кодирование тегов, преобразовывая их в последовательность специальных символов. Например, текст, <B>Bacn</B> будет преобразован в строку <B>Bacn</B>, которая при отображении её браузером выглядит как обычная строка. Использование этой функции приведено в примере 1.
Замечание
Начиная с PHP 4.0.3, в функцию добавлен необязательный параметр quote_style, который задает способ преобразования кавычек. Возможные его значения приведены в таблице 1. Начиная с PHP 4.1.0 в функцию добавлен третий необязательный аргумент charset, который задает используемую кодировку текста. При обработке англоязычных данных это не так важно, но при работе с кирилицей кодировка должна быть задана явно. По умолчанию используется кодировка ISO-8859-IJ. Наиболее употребительные значения параметра приведены в таблице 2.
Таблица 1. Возможные значения параметра quote_style
Значение
Описание
ENT_COMPAT
Преобразуются двойные кавычки, одинарные остаются без изменений
ENT_QUOTES
Преобразуются и двойные, и одинарные кавычки
ENT_NOQUOTES
И двойные, и одинарные кавычки остаются без изменений
Таблица 2. Возможные значения параметра charset
Кодировка
Псевдоними
Описание
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.
На этот раз, если пользователь ввел текст, содержащий HTML-теги, как на рисунке 1, то при формировании страницы теги сохранятся, но в этом случае они будут представлять из себя просто текст (см. рисунк 2).