wp_kses()
Чистить рядок, залишаючи в ньому лише зазначені HTML теги, їх атрибути та значення атрибутів.
Також функція видаляє деякі HTML сутності.
Чекає на НЕекранований рядок! Це означає, що перед використанням потрібно видалити всі екранні слеші (див. wp_unslash() ), які WP автоматично додає для будь-якого $_POST запиту, оскільки це робив PHP (PHP’s magic quotes) до версії 5.4.
KSES (рекурсивний акронім від KSES Strips Evil Scripts) – підсистема WordPress (спочатку написана Ulf Harnhammar), призначена для перевірки та очищення тексту, введеного користувачем. Дозволяє задати список допустимих тегів, стилів і протоколів, і на основі цих параметрів вилучити з тексту користувача все, що їм не відповідає.
wp_kses_allowed_html()
wp_kses_data() ,
wp_kses_post() ,
wp_filter_nohtml_kses() ,
wp_filter_post_kses() ,
wp_filter_kses()
(швидко) | 50000 разів – 2.35 сек
(швидко) |
PHP 7.4.25, WP 6.0.1
Хуків немає.
Повертає
Строку
.
Використання
wp_kses($string, $allowed_html, $allowed_protocols);
-
$string
(рядок) (обов’язковий) - Контент, який необхідно очистити.
-
$allowed_html
(масив/рядок) (обов’язковий) Список допустимих HTML елементів у переданому контенті. Якщо вказати строкове значення, воно означатиме групу встановлених тегів:
post
— залишить допустимі теги для постів (глобальна змінна $allowedposttags )strip
– Виріже всі теги. Аналог функції PHP strip_tags()entities
– HTML сутності, як
(глобальна змінна $allowedentitynames )user_description
,pre_user_description
– теж що іdefault
тільки що дозволяється атрибут rel для посилань <a> .default
аболюбая строка
список базових допустимих тегів. Використовується для очищення тексту коментаря: глобальна змінна $allowedtags .
Параметр може брати рядок! Хоча у коментарях функції написано лише масив. див. wp_kses() → wp_kses_allowed_html()
-
$allowed_protocols
(масив) Протоколи, посилання, з якими будуть допущені в контенті. За замовчуванням дозволено такі протоколи, див wp_allowed_protocols() :
http https ftp ftps mailto news irc gopher nntp feed telnet mms rtsp svn tel fax xmpp webcal urn
Це базові протоколи. Протокол
javascript
краще заборонити сумнівним користувачам.За замовчуванням: array()
Приклади
#1 Очистимо контент, використовуючи KSES WP
Залишимо в ньому тільки теги: ‘a’ (з атрибутами ‘href’ та ‘title’ ), ‘br’, ’em’ та ‘strong’. Все інше буде видалено:
$string = wp_unslash( $_POST['text'] ); // допустимі теги $allowed_html = array( 'a' => array( 'href' => true, 'title' => true, ), 'br' => array(), 'em' => array(), 'strong' => array() ); $text = wp_kses($string, $allowed_html); echo $text;
#2 Залишимо теги, які допустимі при коментуванні
$text = "<div>1111</div><strong>222</strong>"; $text = wp_kses($text, 'default'); echo $text; // виведе // 1111<strong>222</strong>
#3 Які теги знаходяться у глобальній $allowedtags
Array( [a] => Array( [href] => 1 [title] => 1 ) [abbr] => Array( [title] => 1 ) [acronym] => Array( [title] => 1 ) [b] => Array() [blockquote] => Array( [cite] => 1 ) [cite] => Array() [code] => Array() [del] => Array( [datetime] => 1 ) [em] => Array() [i] => Array() [q] => Array( [cite] => 1 ) [s] => Array() [strike] => Array() [strong] => Array() )
нотатки
- Дивіться: wp_kses_post() для specifically filtering post content and fields.
- Дивіться: wp_allowed_protocols() for default allowed protocols in link URLs.
список змін
З версії 1.0.0 | Введено. |
Код wp_kses() wp kses WP 6.0.2
function wp_kses( $string, $allowed_html, $allowed_protocols = array() ) { if ( empty( $allowed_protocols ) ) { $allowed_protocols = wp_allowed_protocols(); } $string = wp_kses_no_null( $string, array( 'slash_zero' => 'keep' ) ); $string = wp_kses_normalize_entities( $string ); $string = wp_kses_hook( $string, $allowed_html, $allowed_protocols ); return wp_kses_split( $string, $allowed_html, $allowed_protocols ); }