esc_attr()
Преобразует знаки " ' < > & в html сущности. Не создает двойного преобразования.
Функция предназначена для фильтрации строки, которую планируется выводить в значениях html атрибутов.
Работает на основе: _wp_specialchars()
Основа для: esc_attr_e(), esc_attr__()
1 раз — 0.000001 сек (скорость света) | 50000 раз — 0.17 сек (очень быстро) | PHP 7.2.5, WP 4.9.8
Хуки из функции
Возвращает
Строку. Очищенную для использования в атрибуте HTML тега строку.
Использование
<?php echo esc_attr( $text ) ?>
- $text(строка) (обязательный)
- Текст, который нужно преобразовать.
Примеры
#1 Пример очистки JSON данных
$qargs = [
'per_page' => 50,
'orderby' => [ 'volume_usd' => 'desc' ],
'target_symbol' => 'foo',
];
$json = json_encode( $qargs );
$esc = esc_attr( $json );
echo htmlspecialchars( $esc );
// Выведет:
// {"per_page":50,"orderby":{"volume_usd":"desc"},"target_symbol":"foo"} #2 Пример использования:
Примеры обработки значений:
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" Notice: Array to string conversion in ...
$text = "<span>(тег) '(кавычка) \"(двойная кавычка) &(амперсанд)"; echo esc_attr( $text ); // Вернет: // <span>(тег) '(кавычка) "(двойная кавычка) &(амперсанд)
#3 Пример учета двойного кодирования:
$text = "> and &"; echo esc_attr( $text ); // > and & echo htmlspecialchars( $text ); // &gt; and &amp;
#4 Пример очистки данных на выходе
<?php $fname = ( isset( $_POST['fname'] ) ) ? $_POST['fname'] : ''; ?> <input type="text" name="fname" value="<?php echo esc_attr( $fname ); ?>">
Список изменений
| С версии 2.8.0 | Введена. |
Код esc_attr() esc attr WP 6.9.1
function esc_attr( $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 an HTML attribute.
*
* Text passed to esc_attr() is stripped of invalid or special characters
* before output.
*
* @since 2.0.6
*
* @param string $safe_text The text after it has been escaped.
* @param string $text The text prior to being escaped.
*/
return apply_filters( 'attribute_escape', $safe_text, $text );
}