如果此元素不允许,则删除所有属性。

原型

wp_kses_attr( string $element, string $attr, array $allowed_html, array $allowed_protocols )

描述

如果允许一些,则调用wp_kses_hair()将它们进一步拆分,然后根据kses_hair()返回的数据构建新的HTML代码。如果还有剩下的话,它还会删除“<”和“>”字符。它还做的另一件事是检查标签是否具有关闭的XHTML斜杠,如果是,它也会在返回的代码中放置一个。

参数

$element (string) (Required) HTML元素/标签

$attr (string) (Required) 从HTML元素到关闭HTML元素标记的HTML属性

$allowed_html (array) (Required) 允许的HTML元素

$allowed_protocols (array) (Required) 允许的协议保持

返回值

(string)  清理HTML元素

源文件

路径:wp-includes/kses.php

<?php
...
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?
	$element_low = strtolower( $element );
	if ( empty( $allowed_html[ $element_low ] ) || true === $allowed_html[ $element_low ] ) {
		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>";
}
...
?>

其他

英文文档:https://developer.wordpress.org/reference/functions/wp_kses_attr/