wp_kses_hair()
Получает список атрибутов html тега (в виде массива) из переданной строки с атрибутами.
Эта функция делает много работы. Кроме того, что она обрабатывает строку и создает из нее массив данных находящихся в ней атрибутов, она дополняет кавычки, если они не указаны в атрибутах. Также, она удаляет неуказанные, а значит запрещенные протоколы (http) из значений атрибута, если это УРЛ. Также, она убирает одинаковые атрибуты, пусть было: foo=bar foo=baz станет foo="bar".
Несмотря на то, что функция относится к функциям очистки (kses), её удобно использовать в плагинах, когда нужно обработать атрибуты тега, такое не редко нужно.
Хуков нет.
Возвращает
Массив<Строку,. Список полученных атрибутов в виде массива описывающего каждый атрибут. Или пустой массив, если не удалось ничего получить.
Использование
wp_kses_hair( $attr, $allowed_protocols );
- $attr(строка) (обязательный)
- Атрибуты html тега, прям как они указаны в атрибуте. Множественные пробелы игнорируются.
- $allowed_protocols(массив) (обязательный)
- Допустимые протоколы, которые нужно сохранить, если в значениях атрибутов есть УРЛ.
Примеры
#1 Демонстрация работы
$attrs = wp_kses_hair(' src="http://example.com/jpg.jpg" alt="aaaaa" foo=bar', 'http');
/*
$attrs будет содержать:
Array
(
[src] => Array
(
[name] => src
[value] => http://example.com/jpg.jpg
[whole] => src="http://example.com/jpg.jpg"
[vless] => n
)
[alt] => Array
(
[name] => alt
[value] => aaaaa
[whole] => alt="aaaaa"
[vless] => n
)
[foo] => Array
(
[name] => foo
[value] => bar
[whole] => foo="bar"
[vless] => n
)
)
*/ #2 Протокол, который отличается от значения атрибута
Если указать протокол, который будет отличаться, то функция просто удалить протокол оставив УРЛ относительным:
$attrs = wp_kses_hair('src=http://example.com/jpg.jpg', 'https');
/*
Получим:
Array
(
[src] => Array
(
[name] => src
[value] => //example.com/jpg.jpg
[whole] => src="//example.com/jpg.jpg"
[vless] => n
)
)
*/
Список изменений
| С версии 1.0.0 | Введена. |
| С версии 7.0.0 | Reliably parses HTML via the HTML API. |