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

sanitize_html_class( string $class, string $fallback = '' )

清理HTML类名以确保其仅包含有效字符

class

html

kses 清理

sanitize 清理more...


描述

将字符串剥离为A-Z、A-Z、0-9、_,-。如果这样做的结果是一个空字符串,那么它将返回所提供的替代值。


参数

$class

(string) (必填) 要清理的类名

$fallback

(string) (可选) 如果清理结果为空字符串,则返回的值。默认为空字符串。

默认值: ''


返回

(string) 净化清理后的值



源码

查看源码 官方文档


更新日志

版本描述
2.8.0开始引入

使用示例

  • 示例1

    类名不能以数字开头,这个函数不考虑这一点。
    https://www.w3.org/TR/CSS21/syndata.html#characters
    此函数可能返回以数字开头的字符串,根据W3定义,这些数字不是有效的类名。

  • 示例2

    创建此函数是为了帮助转义多个HTML类,您可以给它一个类数组或一个由分隔符分隔的类字符串:

    if( ! function_exists("sanitize_html_classes") ){
        function sanitize_html_classes($classes, $sep = " "){
            $return = "";
    
            if(!is_array($classes)) {
                $classes = explode($sep, $classes);
            }
    
            if(!empty($classes)){
                foreach($classes as $class){
                    $return .= sanitize_html_class($class) . " ";
                }
            }
    
            return $return;
        }
    }
    
  • 示例3

    基本示例

    <?php
    // If you want to explicitly style a post, you can use the sanitized version of the post title as a class
    $post_class = sanitize_html_class( $post->post_title );
    echo '<div class="' . $post_class . '">';
    ?>
    
  • 示例4

    一次性清理多个HTML类。

    接受$classes数组或以空格分隔的类名字符串,并使用sanitize_html_class函数运行它们进行清理。

    /**
     * Sanitize multiple HTML classes in one pass.
     *
     * @param    array  $classes           Classes to be sanitized.
     * @param    string $return_format     The return format, 'input', 'string', or 'array'.
     * @return   array|string
     */
    function prefix_sanitize_html_classes( $classes, $return_format = 'input' ) {
    	if ( 'input' === $return_format ) {
    		$return_format = is_array( $classes ) ? 'array' : 'string';
    	}
    
    	$classes           = is_array( $classes ) ? $classes : explode( ' ', $classes );
    	$sanitized_classes = array_map( 'sanitize_html_class', $classes );
    
    	if ( 'array' === $return_format ) {
    		return $sanitized_classes;
    	} else {
    		return implode( ' ', $sanitized_classes );
    	}
    }