esc_html

Позволяет изменить строку, очищенную и экранированную для вывода в HTML
Хук WordPress
INT 2.8.0
WordPress Icon

Описание хука

Хук «esc_html» позволяет определить функцию, которая будет использоваться для очистки и экранирования строки перед выводом в HTML. Этот хук является фильтром и позволяет изменить или модифицировать текст перед его выводом.

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

apply_filters( 'esc_html', string $safe_text, string $text )

В данном примере применяется хук «esc_html» к переменной $safe_text и $text. Хук позволяет определить функцию, которая будет применена к этим переменным перед их выводом.

  • $safe_text (string): Текст после его экранирования.
  • $text (string): Текст до его экранирования.
<?php
/**
 * Пример использования хука esc_html
 *
 * @param string $safe_text Текст после экранирования.
 * @param string $text Текст до экранирования.
 * @return string Экранированный текст.
 */
function custom_esc_html( $safe_text, $text ) {
    // Добавить свою логику обработки текста
    $modified_text = $text . ' (modified)';
    
    // Вернуть экранированный текст
    return esc_html( $modified_text );
}
add_filter( 'esc_html', 'custom_esc_html', 10, 2 );
?>

В данном примере определена функция «custom_esc_html», которая принимает два параметра: $safe_text и $text. Функция добавляет строку «(modified)» к исходному тексту и затем применяет функцию «esc_html» для экранирования текста. Затем функция возвращает экранированный текст.

Примеры использования

Преобразование строки в безопасный HTML-код


/**
 * Пример использования хука esc_html для преобразования строки в безопасный HTML-код.
 */
$text = 'Hello <strong>World</strong>!';
$safe_text = esc_html( $text );
echo $safe_text;

Результат:

Hello &lt;strong&gt;World&lt;/strong&gt;!

В данном примере функция esc_html() преобразует специальные символы в их HTML-сущности. Таким образом, символы < и > заменяются на &lt; и &gt; соответственно, что позволяет безопасно отображать текст на HTML-странице.

Замена специальных символов в тексте


/**
 * Пример использования хука esc_html для замены специальных символов в тексте.
 */
$text = 'Hello "World"!';
$safe_text = esc_html( $text );
echo $safe_text;

Результат:

Hello &quot;World&quot;!

В данном примере функция esc_html() заменяет специальные символы, такие как двойные кавычки ("), на их HTML-сущности (&quot;). Это позволяет избежать проблем с отображением текста, содержащего специальные символы, на HTML-странице.

Очистка и экранирование текста для вывода на HTML-странице


/**
 * Пример использования хука esc_html для очистки и экранирования текста для вывода на HTML-странице.
 */
$text = '<script>alert("Hello World!");</script>';
$safe_text = esc_html( $text );
echo $safe_text;

Результат:

&lt;script&gt;alert(&quot;Hello World!&quot;);&lt;/script&gt;

В данном примере функция esc_html() очищает и экранирует текст, удаляя потенциально опасные HTML-теги, такие как <script>, и заменяя их на их HTML-сущности. Это позволяет безопасно отображать текст на HTML-странице и предотвращает возможные атаки XSS.

Форматирование текста для безопасного отображения


/**
 * Пример использования хука esc_html для форматирования текста для безопасного отображения.
 */
$text = 'Hello <strong>World</strong>!';
$safe_text = esc_html( $text );
echo wp_kses_post( $safe_text );

Результат:

Hello <strong>World</strong>!

В данном примере функция esc_html() преобразует специальные символы в их HTML-сущности, а затем функция wp_kses_post() разрешает только безопасные HTML-теги, такие как <strong>, для отображения. Это позволяет безопасно форматировать и отображать текст на HTML-странице.

Вопросы и ответы

Как безопасно выводить текст на страницу с помощью esc_html?

Функция esc_html предназначена для очистки и экранирования текста перед его выводом на страницу в HTML. Это важно для предотвращения возможных атак XSS и сохранения целостности данных.

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

Пример использования:


$text = 'Some text to be escaped';
$safe_text = esc_html( $text );
echo $safe_text;

Какие символы экранируются при использовании функции esc_html?

Функция esc_html экранирует следующие символы:

  • & — амперсанд
  • < — открывающая угловая скобка
  • > — закрывающая угловая скобка
  • " — двойная кавычка
  • ' — одинарная кавычка

Экранирование этих символов позволяет избежать их интерпретации как HTML-тегов и сохранить текст в его исходном виде.

Как использовать esc_html в шаблонах WordPress?

В шаблонах WordPress функция esc_html часто используется для безопасного вывода текста, переданного в шаблонизатор. Это особенно важно при выводе пользовательского ввода или данных из базы данных.

Пример использования в шаблоне:


<?php
  $text = get_option( 'my_text_option' ); // Получение текста из настроек
  $safe_text = esc_html( $text ); // Экранирование текста
?>
<div class="my-text">
  <p><?php echo $safe_text; ?></p>
</div>

В данном примере текст, полученный из настроек, экранируется с помощью esc_html и выводится внутри HTML-элемента. Это обеспечивает безопасность и сохраняет целостность данных при выводе на страницу.

Какие альтернативы функции esc_html существуют в WordPress?

В WordPress существуют несколько альтернативных функций для безопасного вывода данных в HTML:

  • esc_attr() — для безопасного вывода данных в атрибуты HTML-элементов.
  • esc_js() — для безопасного вывода данных в JavaScript.
  • esc_url() — для безопасного вывода данных в URL.
  • esc_textarea() — для безопасного вывода данных в текстовые области.

Какие проблемы могут возникнуть при неправильном использовании esc_html?

При неправильном использовании функции esc_html() могут возникнуть следующие проблемы:

  • Возможность XSS-атаки, если данные не были правильно очищены и экранированы.
  • Некорректное отображение данных, если они содержат специальные символы HTML.

Как использовать esc_html внутри атрибутов HTML-элементов?

Для безопасного использования функции esc_html() внутри атрибутов HTML-элементов, необходимо обернуть выводимые данные в двойные кавычки и передать их в функцию esc_html(). Например:


<input type="text" value="<?php echo esc_html( $text ); ?>">

Какие функции можно комбинировать с esc_html для обеспечения безопасности вывода данных?

Для обеспечения безопасности вывода данных в WordPress можно комбинировать функцию esc_html() с другими функциями:

  • sanitize_text_field() — для очистки данных от лишних символов.
  • wp_kses() — для разрешения только определенных тегов и атрибутов HTML.
  • wp_strip_all_tags() — для удаления всех HTML-тегов из данных.

Функция esc_html() в WordPress позволяет безопасно выводить данные в HTML, предотвращая возможные атаки и некорректное отображение. Для полной безопасности необходимо комбинировать ее с другими функциями очистки и экранирования данных.

Связанные элементы

  • Функция esc_attr(): экранирует строку для использования в HTML атрибутах.
  • Функция esc_url(): экранирует URL-адрес.
  • Функция esc_textarea(): экранирует текст для использования в текстовых областях.
  • Функция esc_js(): экранирует строку для использования в JavaScript.
  • Функция esc_sql(): экранирует строку для использования в SQL-запросах.
  • Функция esc_url_raw(): экранирует URL-адрес без преобразования символов.
  • Функция esc_attr_e(): экранирует строку для использования в HTML атрибутах и выводит ее.
  • Функция esc_html_e(): экранирует строку для вывода в HTML и выводит ее.
  • Хук pre_kses: фильтрует текст перед его экранированием и очисткой от потенциально опасных элементов.
  • Класс WP_REST_Request: представляет REST-запрос.
Обсуждение