当前浏览:首页 / WordPress函数 / wp_kses()

wp_kses( string $string, array[]|string $allowed_html, string[] $allowed_protocols = array() )

过滤文本内容并去掉不允许的HTML

kses 清理

sanitize 清理more...


描述

此函数确保在给定的文本字符串中只出现允许的HTML元素名称、属性名称、属性值和HTML实体。

此函数预设无反斜杠(unslashed)的数据。

另见


参数

$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开始引入

使用示例

  • 示例1

    WordPress中的许多函数名都是不言而喻的,如果不是,它们的文档通常会揭示它们是如何获得名称的。我发现这样以后更容易回忆起他们的名字和用法。然而,wp_kses是一个例外。所以对于任何想知道的人来说:

    kses来自于XSS(跨站脚本)和access两个术语。它也是 "kses strips evil scripts"的递归缩写(每个开源项目都应该有一个!)。

  • 示例2

    允许的HTML标签数组
    这是一个关于如何格式化允许的HTML标签和属性数组的例子。

    array(
        'a' => array(
            'href' => array(),
            'title' => array()
        ),
        'br' => array(),
        'em' => array(),
        'strong' => array(),
    );
    
    
  • 示例3

    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 的文本链接。

  • 示例4

    请参阅wp_kses_allowed_html()和 /wp-includes/kses.php 以获取允许的HTML标记的可能默认值列表。

  • 示例5
    // 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 )