WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Новые WordPress шаблоны

esc_html() WP 2.8

Заменяет спецсимволы на HTML сущности в переданном тексте, возвращает отформатированный текст. Заменяются следующие символы: &, <, >, ", '.

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

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

Если нужно наоборот декодировать: превратить сущности в символы, используйте wp_specialchars_decode()

Если прогнать через функцию массив, то она разрушит его:

$arr = array( 5, 6 );
$arr = esc_html( $arr ); // $arr превратиться в строку "Array"

Функция работает на основе htmlspecialchars() и меняет параметры по умолчанию. Так htmlspecialchars() делает двойное преобразование, а esc_html() нет:

echo esc_html( '& - &amp;' );         //> &amp; - &amp;
echo htmlspecialchars( '& - &amp;' ); //> &amp; - &amp;amp;

esc_html() - это замена для устаревшей функции wp_specialchars().

Является основой для: esc_html_e(), esc_html__()
Работает на основе: _wp_specialchars(), wp_check_invalid_utf8()
✈ 1 раз = 0.000037с = очень быстро | 50000 раз = 0.27с = очень быстро PHP 7.0.2, WP 4.4.1
Хуки из функции:
Возвращает

Строку. Отформатированный текст.

Использование

esc_html( $text );
$text(строка) (обязательный)
Текст для форматирования.
По умолчанию: нет

Примеры

#1. Показательный пример:

$text = "<p><b> Это \"Makes Sense\" & 'Имеет смысл'!</b></p>";
echo esc_html( $text );

/* Получим:
&lt;p&gt;&lt;b&gt; Это &quot;Makes Sense&quot; &amp; &#039;Имеет смысл&#039;!&lt;/b&gt;&lt;/p&gt;
*/

Код esc_html: wp-includes/formatting.php VER 4.9.8

<?php
function esc_html( $text ) {
	$safe_text = wp_check_invalid_utf8( $text );
	$safe_text = _wp_specialchars( $safe_text, ENT_QUOTES );
	/**
	 * Filters a string cleaned and escaped for output in HTML.
	 *
	 * Text passed to esc_html() is stripped of invalid or special characters
	 * before output.
	 *
	 * @since 2.8.0
	 *
	 * @param string $safe_text The text after it has been escaped.
 	 * @param string $text      The text prior to being escaped.
	 */
	return apply_filters( 'esc_html', $safe_text, $text );
}

Cвязанные функции

Из метки: esc_ (очистка валидация)

Еще из раздела: Очистка данных

3 коммента
  • Alexandrov Yan8 cайт: codyshop.ru

    Добрый день. В кастомайзере хочу использовать html в названиях секций. Однако, параметр label обрабатывается функцией esc_html. В функции есть одноименный фильтр esc_html. Как его используя, можно безопасно выводить html?

    • Kama7021

      Чтобы безопасно, только через wp_kses() с указанием массива разрешенных тегов, атрибутов. Если будешь это вешать на хук esc_html, то тебе нужно каким-то образом определить что обрабатывается именно твоя строк, чтобы везде не срабатывал хук. Возможно для определения лучше добавить в строку какую-то метку, потом её вырезать при обработке...

      П.С. если чего интересно получится, скинь код, добавлю в примеры.

Здравствуйте, !     Войти . Зарегистрироваться