Большинство названий функций в Кодексе WordPress уже сразу дают нам подсказку о том, какое назначение у функции. В слове kses можно увидеть слова XSS и access (что логично – она позволяет защититься от XSS-атак), кроме того это акроним kses strip evil scripts. Больше про очистку данных читайте в этом уроке.
Функция позволяет убедиться в том, что в переданной в ней строке присутствуют только разрешённые теги HTML и разрешённые для них атрибуты и их значения, и разрешённые протоколы у ссылок. Всё, что не разрешено, будет удалено.
wp_kses( $string, $allowed_html, $allowed_protocols = array() )
strip
– все HTML-теги будут удалены, функция превратится в аналог PHP-функция strip_tags()
,data
– в этом случае только блочные HTML-теги будут удалены, кроме тега <blockquote>,
post
– разрешает все теги и атрибуты, которые разрешены для контента постов в WordPress, обычно они содержатся в глобальной переменной $allowedposttag
. У меня уже был урок, о том, как изменить эти значения,default
– все теги и атрибуты для содержимого комментария, они ещё есть в $allowedtags
. О том, как их менять, я рассказывал тут,user_description
, pre_user_description
– то же, что и default
, но ещё разрешён атрибут rel
для ссылок;wp_allowed_protocols()
, которая возвращает массив:
Array ( [0] => http [1] => https [2] => ftp [3] => ftps [4] => mailto [5] => news [6] => irc [7] => irc6 [8] => ircs [9] => gopher [10] => nntp [11] => feed [12] => telnet [13] => mms [14] => rtsp [15] => sms [16] => svn [17] => tel [18] => fax [19] => xmpp [20] => webcal [21] => urn )
Каждый тег и каждый утрибут указываются в виде ассоциативного массива.
<img>
поддерживает лишь атрибут src
и alt
, все остальные атрибуты будут удалены.src
несколько значений URL картинок, остальные будут удалены. Очень мощная фильтрация, согласен.$allowed_html = array( 'a' => array( 'href' => array(), 'title' => array() ), 'br' => array(), 'em' => array(), 'strong' => array(), 'img' => array( 'src' => array(), 'alt' => array(), ) ); echo wp_kses( $string, $allowed_html );
Теперь хочу предложить вам почистить совершенно определённую стркоу.
$str = 'Привет! Это картинка <a href="#"><img src="cat.jpg" alt="котейка" width="100" height="100" /></a> кота.'; echo wp_kses( $str array( 'img' => array( 'src' => array(), 'alt' => array(), ), ) ); // Привет! Это картинка <img src="cat.jpg" alt="котейка" /> кота.
Как можно заметить в примере, ссылка была удалена, а также и пара атрибутов из тега <img>
.
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.
Полезная штука, спасибо, что напомнили.