wp_kses

Чистит строку, оставляя в ней только указанные HTML теги, их атрибуты и значения атрибутов.

Также функция убирает некоторые HTML сущности из строки.

Перед тем как использовать эту функцию нужно позаботиться о том, чтобы в строке не было экранированных слэшей, которые автоматически могут добавляться к данным в PHP (PHP’s magic quotes).

KSES (рекурсивный акроним от KSES Strips Evil Scripts) — подсистема в WordPress (изначально написанная Ulf Harnhammar), предназначенная для проверки и очистки текста, введённого пользователем. Позволяет задать список допустимых тэгов, стилей и протоколов, и на основе этих параметров убрать из текста пользователя всё, что им не соответствует.

Хуков нет.

Возвращает

Очищенную строку.

Использование

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.

По умолчанию: нет

$allowed_protocols(массив)

Протоколы, ссылки с которыми будут допущены в контенте. По умолчанию допускаются: http, https, ftp, mailto, news, irc, gopher, nntp, feed и telnet. Это все базовые протоколы, кроме javascript, который лучше запретить для сомнительных пользователей.

По умолчанию: http, https, ftp, mailto, news, irc, gopher, nntp, feed, telnet

Примеры

#1. Очистим контент, использую KSES WP

Оставим в нем только теги: ‘a’ ( с атрибутами ‘href’ и ‘title’ ), ‘br’, ’em’ и ‘strong’. Все остальное будет удалено:

$text = "<div>1111</div><strong>222</strong>";
$text = wp_kses( $text, 'default' );
echo $text;

// выведет
// 1111<strong>222</strong>

#3. Какие теги находятся в глобальной $allowedtags

<?php
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); // WP changed the order of these funcs and added args to wp_kses_hook
	return wp_kses_split($string, $allowed_html, $allowed_protocols);
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *