wp_kses_attr()删除当前元素所有不允许的属性

目录

描述

译文

该函数删除元素不允许的所有属性。

若某些属性得到许可,函数调用wp_kses_hair()进一步分裂这些属性,并利用 wp_kses_hair()返回的信息创建新的HTML代码。该函数删除剩余的'<' and '>'字符。此外该函数还负责检查标签是否具有XHTML结尾斜线,如果有,函数会在返回的代码中也添加结尾斜线。

原文

删除当前元素所有不  的属性。

它会调用wp_kses_hair() 步将属性分开, 后使用wp_kses_hair()的返回值构建新的 HTML 代码。

它会删除任 多余的 '<' 和 '>'  符,另外还有一个功能就是他会检 标签是 有借宿的 XHTML 斜线,如果没有,它 添加上。

wp_kses_attr() 描述

用法

<?php wp_kses_attr$element$attr$allowed_html$allowed_protocols ?>

wp_kses_attr() 用法

参数

$element

(string) (必填) HTML 元素/标签

 认值: None

$attr

(string) (必填) HTML 标签的属 

默认值: None

$allowed_html

(array) (必填) 允许的 HTML 元素

默认值: None

$allowed_protocols

(array) (必填) 允许的协议

 认值: None

wp_kses_attr() 参数

返回值

(string) 

过滤后的HTML元素

wp_kses_attr() 返回值

历史

添加于 版本: 1.0.0

wp_kses_attr() 历史

源文件

wp_kses_attr() 函数的代码位于 wp-includes/kses.php.

/* ----------------------------------
 * wordpress之魂 © http://wphun.com
 * ---------------------------------- */
/**
 * Removes all attributes, if none are allowed for this element.
 *
 * If some are allowed it calls wp_kses_hair() to split them further, and then
 * it builds up new HTML code from the data that kses_hair() returns. It also
 * removes "<" and="" "="">" characters, if there are any left. One more thing it does
 * is to check if the tag has a closing XHTML slash, and if it does, it puts one
 * in the returned code as well.
 *
 * @since 1.0.0
 *
 * @param string $element           HTML element/tag
 * @param string $attr              HTML attributes from HTML element to closing HTML element tag
 * @param array  $allowed_html      Allowed HTML elements
 * @param array  $allowed_protocols Allowed protocols to keep
 * @return string Sanitized HTML element
 */
function wp_kses_attr($element, $attr, $allowed_html, $allowed_protocols) {
	if ( ! is_array( $allowed_html ) )
		$allowed_html = wp_kses_allowed_html( $allowed_html );

	// Is there a closing XHTML slash at the end of the attributes?
	$xhtml_slash = '';
	if (preg_match('%s*/s*$%', $attr))
		$xhtml_slash = ' /';

	// Are any attributes allowed at all for this element?
	if ( ! isset($allowed_html[strtolower($element)]) || count($allowed_html[strtolower($element)]) == 0 )
		return "<$element$xhtml_slash>";

	// Split it
	$attrarr = wp_kses_hair($attr, $allowed_protocols);

	// Go through $attrarr, and save the allowed attributes for this element
	// in $attr2
	$attr2 = '';
	foreach ( $attrarr as $arreach ) {
		if ( wp_kses_attr_check( $arreach['name'], $arreach['value'], $arreach['whole'], $arreach['vless'], $element, $allowed_html ) ) {
			$attr2 .= ' '.$arreach['whole'];
		}
	}

	// Remove any "<" or="" "="">" characters
	$attr2 = preg_replace('/[<>]/', '', $attr2);

	return "<$element$attr2$xhtml_slash>";
}

wp_kses_attr() 源文件