Большинство названий функций в Кодексе WordPress уже сразу дают нам подсказку о том, какое назначение у функции. В слове kses можно увидеть слова XSS и access (что логично – она позволяет защититься от XSS-атак), кроме того это акроним kses strip evil scripts. Больше про очистку данных читайте в этом уроке.
Функция позволяет убедиться в том, что в переданной в ней строке присутствуют только разрешённые теги HTML и разрешённые для них атрибуты и их значения, и разрешённые протоколы у ссылок. Всё, что не разрешено, будет удалено.
wp_kses( $string, $allowed_html, $allowed_protocols = array() )
Параметры
- $string
- (строка) Строка, которую планируем очищать.
- $allowed_html
- (массив|строка) Список разрешённых HTML-тегов и значений атрибутов. Кроме того, в этот параметр можно передать название шаблона обработки в виде строк, например:
strip
– все HTML-теги будут удалены, функция превратится в аналог PHP-функцияstrip_tags()
,data
– в этом случае только блочные HTML-теги будут удалены, кроме тега<blockquote>,
post
– разрешает все теги и атрибуты, которые разрешены для контента постов в WordPress, обычно они содержатся в глобальной переменной$allowedposttag
. У меня уже был урок, о том, как изменить эти значения,default
– все теги и атрибуты для содержимого комментария, они ещё есть в$allowedtags
. О том, как их менять, я рассказывал тут,user_description
,pre_user_description
– то же, что иdefault
, но ещё разрешён атрибутrel
для ссылок;
- $allowed_protocols
- (массив) Массив из поддерживаемых протоколов в урле (http,ftp и так далее). Если в переданном URL используется протокол, который не указан в этом массиве, то функция возвращает пустую строку. По умолчанию – значение функции
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 )
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 )
Примеры
1. Как задать разрешённые HTML-теги и атрибуты
Каждый тег и каждый утрибут указываются в виде ассоциативного массива.
$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 );
2. Очистка строки
Теперь хочу предложить вам почистить совершенно определённую стркоу.
$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>
.