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

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

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

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

Также не производит двойного преобразования. Если изучить исходный код функции, то в целом можно сказать, что она не особо отличается от 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>
// в исходном коде будет <a href="https://misha.agency">Миша Рудрастых</a>
echo esc_html( $text );

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

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

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

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

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

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

Получим:

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

Хуки

esc_html

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

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

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии