描述
此函数确保在给定的文本字符串中只出现允许的HTML元素名称、属性名称、属性值和HTML实体。
此函数预设无反斜杠(unslashed)的数据。
另见
- wp_kses_post(): 用于专门过滤文章的内容字段
- wp_allowed_protocols(): 用于链接URL中默认允许的协议。
参数
- $string
-
(string) (必填) 要筛选的文本内容。
- $allowed_html
-
(array[]|string) (必填) 允许的HTML元素和属性的数组,或上下文名称,如“post”。有关可接受的上下文名称列表,请参见wp_kses_allowed_html()。
- $allowed_protocols
-
(string[]) (可选) 允许的URL协议数组。
默认值: array()
返回
(string) 只包含允许的HTML的过滤内容。
说明
KSES是一个递归首字母缩略词,代表“KSES Strips Evil Scripts”(KSES去除恶意脚本)。
对于参数 $allowed_protocols
,默认允许的协议是http、https、ftp、mailto、news、irc、gopher、nntp、feed和telnet。这涵盖了所有常见的链接协议,但javascript除外,对于不受信任的用户不应该允许javascript。
源码
更新日志
版本 | 描述 |
---|---|
1.0.0 | 开始引入 |
使用示例
WordPress中的许多函数名都是不言而喻的,如果不是,它们的文档通常会揭示它们是如何获得名称的。我发现这样以后更容易回忆起他们的名字和用法。然而,
wp_kses
是一个例外。所以对于任何想知道的人来说:kses
来自于XSS(跨站脚本)和access两个术语。它也是 "kses strips evil scripts"的递归缩写(每个开源项目都应该有一个!)。允许的HTML标签数组
这是一个关于如何格式化允许的HTML标签和属性数组的例子。array( 'a' => array( 'href' => array(), 'title' => array() ), 'br' => array(), 'em' => array(), 'strong' => array(), );
WordPress wp_kses 是一种HTML过滤机制。如果您需要以特定的(自定义)方式转义输出,WordPress中的wp_kses函数将非常方便。
<?php $str = 'Check Kses function I am <strong>stronger</strong> and cooler every single day <a href="#" rel="nofollow ugc">Click Here</a>'; echo $str; $arr = array( 'br' => array(), 'p' => array(), 'strong' => array() ); echo 'String using wp_kses function....' . wp_kses( $str, $arr ); ?>
输出:
wp_kses
使用前: Check Kses function I am stronger and cooler every single day Click Here
wp_kses
使用后: String using wp_kses function…. Check Kses function I am stronger and cooler every single day Click Here它将显示一个结果字符串,如输出屏幕中所示。它只反映了wp_kses函数中定义的允许的标签strong, br, p,而锚标签被删除。因此,没有形成 Click Here 的文本链接。
请参阅
wp_kses_allowed_html()
和 /wp-includes/kses.php 以获取允许的HTML标记的可能默认值列表。// Allowed img tag and support svg base64 data like: <img src="data:image/svg+xml;base64,__base64_code__" /> function wpdocs_allowed_html() { return array( 'img' => array( 'title' => array(), 'src' => array(), 'alt' => array(), ) ); } function wpdocs_allowed_protocols() { return array( 'data' => array(), 'http' => array(), 'https' => array(), ); } function wpdocs_output_img() { $html = ''; ob_start(); ?> <img src="data:image/svg+xml;base64,Your_base64_code" title="img_title" alt="alt_info" /> <?php $html = ob_get_contents(); ob_end_clean(); return $html; } $allowed_html = wpdocs_allowed_html(); $allowed_protocols = wpdocs_allowed_protocols(); $wpdocs_img = wpdocs_output_img(); echo wp_kses( $wpdocs_img, $allowed_html, $allowed_protocols )