Возвращает строку, предварительно экранируя в ней 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( '& - &' ); // & - &
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] => & )
Хуки
esc_html
return apply_filters( 'esc_html', $safe_text, $text );
Вообще этот фильтр-хук очень похож на attribute_escape внутри функции esc_attr() и на esc_textarea внутри функции esc_textarea(), поэтому рекомендую посмотреть примеры там, кроме того, если вы не совсем умеете работать с фильтрами в WordPress, то это руководство для вас.