esc_html() – подготавливает строку для вывода в HTML

Возвращает строку, предварительно экранируя в ней HTML-теги. Если в строке нечего экранировать, то функция возвратит ее в первоначальном состоянии.

Кроме того, функция заменяет на HTML-сущности одинарные и двойные кавычки и амперсанд, по сути вот список заменяемых символов:

БылоСтало
& (амперсанд)&
" (двойная кавычка)"
' (одинарная кавычка)'
< (меньше, чем, часть HTML тегов)&lt;
> (больше, чем, часть HTML тегов)&gt;

Также не производит двойного преобразования. Если изучить исходный код функции, то в целом можно сказать, что она не особо отличается от esc_attr(), но тем не менее esc_attr() – для HTML-атрибутов, esc_html() – для вывода непосредственно в HTML-коде.

Также, функция проверяет переданную строку на наличие в ней неправильной кодировки utf-8 и, по возможности, пытается исправить.

Кроме того, к результату ещё будет применён фильтр-хук esc_html, на который может быть добавлена какая-либо дополнительная обработка/очистка строки.

Если у вас возникают вопросы, для чего вообще нужны все эти экранирующие функции, рекомендую посмотреть мой видеоурок, где я подробно показываю всё это на примере.

esc_html( $text )

Параметры

$text
(строка) Текст или HTML-код, который нужно обработать.

Примеры

1. Пример с ссылкой

Начнём с максимально лёгкого примера, попробуем вывести ссылку, т.е. HTML-тег <a>.

$text = '<a href="https://misha.agency">Миша Рудрастых</a>';
 
// выведется кликабельная ссылка
// в исходном коде будет: <a href="https://misha.agency">Миша Рудрастых</a>
echo $text; 
 
// выведется текст <a href="https://misha.agency">Миша Рудрастых</a>
// в исходном коде будет &lt;a href=&quot;https://misha.agency&quot;&gt;Миша Рудрастых&lt;/a&gt;
echo esc_html( $text );

2. Двойное экранирование

Функция не осуществляет повторное экранирование, как например esc_textarea().

echo esc_html( '& - &amp;' );     // &amp; - &amp;
echo esc_textarea( '& - &amp;' ); // &amp; - &amp;amp;

3. Обработка массивов

При передачи в функцию массива получим PHP-уведомление Notice: Array to string conversion, а сама функция вернёт строку Array. Поэтому для очистки массивов используйте array_map().

$texts = array( '<strong>Привет, мир!</strong>', '&amp;' );
 
// в первом параметре – название функции, во втором – массив, который нужно обработать
$escaped_texts = array_map( 'esc_html', $texts ); 
 
print_r( $escaped_texts );

Получим:

Array
(
    [0] => &lt;strong&gt;Привет, мир!&lt;/strong&gt;
    [1] => &amp;amp;
)

Хуки

esc_html

return apply_filters( 'esc_html', $safe_text, $text );

Вообще этот фильтр-хук очень похож на attribute_escape внутри функции esc_attr() и на esc_textarea внутри функции esc_textarea(), поэтому рекомендую посмотреть примеры там, кроме того, если вы не совсем умеете работать с фильтрами в WordPress, то это руководство для вас.

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Комментарии — 3

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

Миша Рудрастых и WordPress

Полезности из мира WordPress и жизни студии.

Мой телеграм-канал