Функция esc_html()
используется для экранирования текста, который будет выводиться в контексте HTML, предотвращая выполнение потенциально вредного кода. Она заменяет специальные символы, такие как &
, <
, >
, "
и '
на их HTML-сущности, предотвращая атаки XSS.
esc_html( string $text ): string
Параметры
$text
(строка, обязательный): Текст, который необходимо экранировать.
Возвращаемое значение
string
: Экранированная строка, в которой специальные символы заменены на HTML-сущности.
Пример 1: Экранирование HTML-тега
Предположим, что у вас есть строка с HTML, которую необходимо отобразить в браузере как текст, а не как HTML-разметку.
$html = esc_html( '<a href="http://www.example.com/">A link</a>' );
echo $html;
Результат:
<a href="http://www.example.com/">A link</a>
Это отобразится в HTML-документе как:
<a href="http://www.example.com/">A link</a>
Пример 2: Избежание двойного кодирования
Функция esc_html()
автоматически избегает двойного кодирования сущностей. Если строка уже содержит HTML-сущности, они не будут преобразованы повторно.
echo esc_html( 'A & B' );
Результат:
A & B
Пример 3: Экранирование текста с кавычками и символами
Функция полезна для экранирования текста с кавычками, амперсандом и другими специальными символами.
$text = "<p><b> Это \"Makes Sense\" & 'Имеет смысл'!</b></p>";
echo esc_html( $text );
Результат:
<p><b> Это "Makes Sense" & 'Имеет смысл'!</b></p>
Примечания
- Не используйте
esc_html()
для экранирования ссылок. Если в строке содержатся ссылки (например, в атрибутеhref
илиsrc
), то экранирование с помощьюesc_html()
сделает эти ссылки неработоспособными. Для этих целей используйте функциюesc_url()
.
Например:
echo esc_url( 'http://www.example.com' );
- Функция
esc_html()
не создает двойного кодирования, что делает ее более безопасной и удобной для использования, особенно при работе с уже экранированными строками.
Заменяемые символы и их HTML-сущности
Символ | Сущность |
---|---|
& (амперсанд) | & |
" (двойная кавычка) | " |
' (одинарная кавычка) | ' |
< (меньше) | < |
> (больше) | > |
Рекомендуемое использование
- Используйте
esc_html()
, когда нужно вывести текст, который может содержать HTML-теги или специальные символы, но вы хотите, чтобы они отображались как текст, а не как HTML-разметка. - Не используйте для обработки массива или объектов: Применение функции к массиву или объекту приведет к ошибке конверсии типов.
Заключение
Функция esc_html()
— это мощный инструмент для безопасного вывода данных в HTML-документы. Она гарантирует, что специальные символы не интерпретируются браузером как HTML-код, предотвращая возможные XSS-атаки.