wp_kses_split2()修正格式错误的HTML标签

目录

描述

译文

回调wp_kses_split(),修复损坏的HTML标签。

该函数进行大量工作。wp_kses_split2()拒绝<:::>等不完整字符。如果某个元素不允许出现,wp_kses_split2()返回空字符。否则wp_kses_split2()会将标签拆分为一个元素和一个属性列表。

标签被拆分后会运行另一个过滤器函数,这个过滤器函数能够删除所有非法属性。

原文

wp_kses_split() 用它用来修正 式错误的 HTML  签。

它摒弃了一  常畸形的标签,如<:::>,如果 HTML 元 不被允许, 返回一个空 符串,否则,这个元 将被 拆成元素 它的属性列表。

标签被分 元素和它的属  之后,会使用另外一个过滤 ,把  的属性删除,并且返回。

wp_kses_split2() 描述

用法

<?php wp_kses_split2$string$allowed_html$allowed_protocols ?>

wp_kses_split2() 用法

参数

$string

(string) (必填) 要过滤的字符串

 认值: None

$allowed_html

(array) (必填) 允许的 HTML  

默认 : None

$allowed_protocols

(array) (必填) 允许的协 

默认值: None

wp_kses_split2() 参数

返回值

(string) 

修正  HTML 标签的字符 

wp_kses_split2() 返回值

注意

  • 这是 个私有函数, 应该直 被调用,列在 Codex 只 为了文档的完整性。
  • 使用 : wp_kses_attr()
  • wp_kses_split2() 注意

    历史

    添加于 版本: 1.0.0

    wp_kses_split2() 历史

    源文件

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

    /* ----------------------------------
     * wordpress之魂 © http://wphun.com
     * ---------------------------------- */
    /**
     * Callback for wp_kses_split for fixing malformed HTML tags.
     *
     * This function does a lot of work. It rejects some very malformed things like
     * <:::>. It returns an empty string, if the element isn't allowed (look ma, no
     * strip_tags()!). Otherwise it splits the tag into an element and an attribute
     * list.
     *
     * After the tag is split into an element and an attribute list, it is run
     * through another filter which will remove illegal attributes and once that is
     * completed, will be returned.
     *
     * @access private
     * @since 1.0.0
     *
     * @param string $string            Content to filter
     * @param array  $allowed_html      Allowed HTML elements
     * @param array  $allowed_protocols Allowed protocols to keep
     * @return string Fixed HTML element
     */
    function wp_kses_split2($string, $allowed_html, $allowed_protocols) {
    	$string = wp_kses_stripslashes($string);
    
    	if (substr($string, 0, 1) != '<') return="" '>';="" it="" matched="" a="" "="">" character
    
    	if ( ''), '', $string );
    		while ( $string != ($newstring = wp_kses($string, $allowed_html, $allowed_protocols)) )
    			$string = $newstring;
    		if ( $string == '' )
    			return '';
    		// prevent multiple dashes in comments
    		$string = preg_replace('/--+/', '-', $string);
    		// prevent three dashes closing a comment
    		$string = preg_replace('/-$/', '', $string);
    		return "";
    	}
    	// Allow HTML comments
    
    	if (!preg_match('%^]*)>?$%', $string, $matches))
    		return '';
    	// It's seriously malformed
    
    	$slash = trim($matches[1]);
    	$elem = $matches[2];
    	$attrlist = $matches[3];
    
    	if ( ! is_array( $allowed_html ) )
    		$allowed_html = wp_kses_allowed_html( $allowed_html );
    
    	if ( ! isset($allowed_html[strtolower($elem)]) )
    		return '';
    	// They are using a not allowed HTML element
    
    	if ($slash != '')
    		return "";
    	// No attributes are allowed for closing elements
    
    	return wp_kses_attr( $elem, $attrlist, $allowed_html, $allowed_protocols );
    }
    
    

    wp_kses_split2() 源文件