Функция esc_attr(): безопасность HTML-атрибутов, преобразование символов

esc_attr() │ WP 2.8.0

Функция esc_attr() отвечает за безопасность HTML-атрибутов. Она преобразует символы <, >, &, " и ' в их HTML-сущности, чтобы предотвратить ошибки и атаки на сайт. Эта функция не выполняет двойное экранирование, что означает, что она не будет повторно обрабатывать уже экранированные строки.

Назначение

Функция предназначена для преобразования необработанных строк в корректный формат для отображения в HTML-атрибутах.

Используется в функциях

  • esc_attr_e()
  • esc_attr()

Время выполнения

  • 1 раз — 0.000001 сек (очень быстро)
  • 50,000 раз — 0.17 сек (также быстро)
  • PHP 7.2.5, WP 4.9.8

Хуки функции

  • attribute_escape

Возврат

Функция возвращает строку. Это экранированная строка, которую можно использовать в HTML-атрибутах.

Применение

Где $text (строка) — необработанный текст, который нужно преобразовать.

Примеры

Пример 1: Очистка данных при выводе


Пример 2: Примеры значений

Вот несколько примеров использования функции esc_attr():

var_dump( esc_attr( '0' ) );   // string(1) "0"
var_dump( esc_attr( 123 ) );   // string(3) "123"
var_dump( esc_attr( false ) ); // string(0) ""
var_dump( esc_attr( null ) );  // string(0) ""
var_dump( esc_attr( '' ) );    // string(0) ""
var_dump( esc_attr( '   ' ) ); // string(3) "   "
var_dump( esc_attr( [] ) );    // string(5) "Array" (предупреждение: преобразование массива в строку)
$text = "(tag) '(quote) "(double quote) &(ampersand)";
echo esc_attr( $text );

// Возвращает:
// <span>(tag) '(quote) "(double quote) &(ampersand)

Пример 3: Пример двойного преобразования

$text = "> and &";
echo esc_attr( $text );         // > and &
echo htmlspecialchars( $text ); // &gt; and &amp;

Изменения

Функция esc_attr() была введена в версии 2.8.0.

Код функции

Вот код функции esc_attr(), доступный в файле wp-includes/formatting.php:

function esc_attr( $text ) {
$safe_text = wp_check_invalid_utf8( $text );
$safe_text = _wp_specialchars( $safe_text, ENT_QUOTES );
/**

  • Фильтрует строку, очищенную и экранированную для вывода в HTML-атрибуте.
  • Текст, переданный в esc_attr(), очищается от недопустимых или специальных символов
  • перед выводом.
  • @since 2.0.6
  • @param string $safe_text Текст после экранирования.
  • @param string $text Текст до экранирования.
    */
    return apply_filters( 'attribute_escape', $safe_text, $text );
    }

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

  • esc_attr__()
  • esc_attr_e()
  • esc_html()
  • esc_html__()
  • esc_html_e()
  • esc_js()
  • esc_sql()
  • esc_textarea()
  • esc_url()
  • esc_url_raw()
  • tag_escape()
  • urlencode_deep()
  • wp_specialchars_decode()
  • wp_strip_all_tags()

Очистка и экранирование

К таким функциям относятся:

  • sanitize_email()
  • sanitize_file_name()
  • sanitize_html_class()
  • sanitize_option()
  • sanitize_post_field()
  • sanitize_text_field()
  • sanitize_textarea_field()
  • sanitize_title()
  • sanitize_title_with_dashes()
  • validate_file()
  • wp_check_invalid_utf8()
  • wp_filter_kses()
  • wp_filter_nohtml_kses()
  • wp_filter_post_kses()
  • wp_kses()
  • wp_kses_data()

Эти функции помогают в дополнительной обработке и защите данных.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *