PHP htmlspecialchars()Функции

PHP String 参考手册Справочное руководство по строкам PHP

Примеры

Преобразуйте предопределённые символы "<" (меньше) и ">" (больше) в HTML-сущности:

<?php $str = "Это какой-то <b>жирный</b> текст."; echo htmlspecialchars($str); ?>

HTML-вывод приведённого выше кода выглядит следующим образом (просмотр исходного кода):

<!DOCTYPE html> <html> <body> Это какой-то &lt;b&gt;жирный&lt;/b&gt; текст. </body> </html>

Вывод браузера для приведённого выше кода выглядит так:

Это какой-то <b>жирный</b> текст.

Запустить пример »

Определение и использование

Функция htmlspecialchars() преобразует некоторые предопределённые символы в HTML-сущности.

Предопределённые символы:

  • & (амперсанд) становится &amp;
  • " (двойная кавычка) становится &quot;
  • ' (одинарная кавычка) становится &#039;
  • < (меньше) становится &lt;
  • > (больше) становится &gt;

Совет:Чтобы преобразовать специальные HTML-сущности обратно в символы, используйте htmlspecialchars_decode()функцию.


Синтаксис

htmlspecialchars(string,flags,character-set,double_encode)

Параметр Описание
string Обязательный. Указывает строку для преобразования.
флаги Необязательно. Указывает, как обрабатывать кавычки, недопустимую кодировку и какой тип документа использовать.

Доступные типы кавычек:

  • ENT_COMPAT - По умолчанию. Кодирует только двойные кавычки.
  • ENT_QUOTES - Кодирует двойные и одинарные кавычки.
  • ENT_NOQUOTES - Не кодирует кавычки.

Недопустимая кодировка:

  • ENT_IGNORE - Игнорирует недопустимую кодировку вместо того, чтобы функция возвращала пустую строку. Следует избегать, так как это может иметь последствия для безопасности.
  • ENT_SUBSTITUTE - Заменяет недопустимую кодировку указанным символом — символом замены Unicode U+FFFD (UTF-8) или &#FFFD;, вместо возврата пустой строки.
  • ENT_DISALLOWED - Заменяет недопустимые кодовые точки в указанном типе документа замещающим символом Unicode U+FFFD (UTF-8) или &#FFFD;.

Дополнительные флаги, указывающие используемый тип документа:

  • ENT_HTML401 - По умолчанию. Обрабатывает код как HTML 4.01.
  • ENT_HTML5 - Обрабатывает код как HTML 5.
  • ENT_XML1 - Обрабатывает код как XML 1.
  • ENT_XHTML - Обрабатывает код как XHTML.
character-set Необязательно. Строка, задающая используемую кодировку.

Допустимые значения:

  • UTF-8 — по умолчанию. ASCII-совместимый многобайтовый 8-битный Unicode
  • ISO-8859-1 - Западноевропейская
  • ISO-8859-15 - Западноевропейская (добавляет знак евро + французские и финские буквы, отсутствующие в ISO-8859-1)
  • cp866 - Кириллическая кодировка для DOS
  • cp1251 - Кириллическая кодировка для Windows
  • cp1252 - Западноевропейская кодировка для Windows
  • KOI8-R - Русская
  • BIG5 - Традиционный китайский, в основном используется на Тайване
  • GB2312 - упрощённый китайский, национальный стандартный набор символов
  • BIG5-HKSCS - Big5 с гонконгскими расширениями
  • Shift_JIS - японский
  • EUC-JP - японский
  • MacRoman — кодировка, используемая операционной системой Mac

Примечание:В версиях до PHP 5.4 нераспознанные наборы символов будут игнорироваться и заменяться на ISO-8859-1. Начиная с PHP 5.4 нераспознанные наборы символов будут игнорироваться и заменяться на UTF-8.

double_encode Необязательный. Логическое значение, указывающее, следует ли кодировать существующие HTML-сущности.
  • TRUE - По умолчанию. Преобразует каждую сущность.
  • FALSE - Не будет кодировать существующие HTML-сущности.

Технические детали

Возвращаемое значение: Возвращает преобразованную строку.

Еслиstringсодержит недопустимую кодировку, возвращает пустую строку, если не установлены флаги ENT_IGNORE или ENT_SUBSTITUTE.
Версия PHP: 4+
Список изменений: В PHP 5 значение параметраcharacter-setпо умолчанию было изменено на UTF-8.

В PHP 5.4 были добавлены следующие: ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_HTML5, ENT_XML1 и ENT_XHTML.

В PHP 5.3 был добавлен ENT_IGNORE.

В PHP 5.2.3 добавленdouble_encodeпараметр.

В PHP 4.1 добавленcharacter-setпараметр.


Другие примеры

Пример 1

Преобразовать некоторые предопределённые символы в HTML-сущности:

<?php $str = "Jane & 'Tarzan'"; echo htmlspecialchars($str, ENT_COMPAT); //По умолчанию кодирует только двойные кавычки echo "<br>"; echo htmlspecialchars($str, ENT_QUOTES); //Кодирует двойные и одинарные кавычки echo "<br>"; echo htmlspecialchars($str, ENT_NOQUOTES); //Не кодирует кавычки ?>

HTML-вывод приведённого выше кода выглядит следующим образом (просмотр исходного кода):

<!DOCTYPE html> <html> <body> Jane &amp; 'Tarzan'<br> Jane &amp; 'Tarzan'<br> Jane &amp; 'Tarzan' </body> </html>

Вывод браузера для приведённого выше кода выглядит так:

Jane & 'Tarzan'
Jane & 'Tarzan'
Jane & 'Tarzan'

Запустить пример »

Пример 2

Преобразовать двойные кавычки в HTML-сущности:

<?php $str = 'I love "PHP".'; echo htmlspecialchars($str, ENT_QUOTES); //Кодирует двойные и одинарные кавычки ?>
;

HTML-вывод приведённого выше кода выглядит следующим образом (просмотр исходного кода):

<!DOCTYPE html> <html> <body> I love &quot;PHP&quot;. </body> </html>

Вывод браузера для приведённого выше кода выглядит так:

I love "PHP".

Запустить пример »


PHP String 参考手册Справочное руководство по строкам PHP Другие расширения