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

sanitize_text_field( string $str )

清理用户输入或数据库中的字符串

field 字段more...

kses 清理

sanitize 清理more...

textmore...


描述

  • 检查是否有无效的 UTF-8,
  • 将单个 < 字符转换为实体
  • 剥离所有标签
  • 移除换行符、制表符和多余的空格
  • 剥离八进制

另见


参数

$str

(string) (必填) 要清理的字符串。


返回

(string) 净化清理后的字符串。


说明

基本用法

<?php sanitize_text_field( $str ) ?>


源码

查看源码 官方文档


更新日志

版本描述
2.9.0开始引入

使用示例

  • 示例1

    此函数不是为了防止SQL注入,因此请不要在数据库查询中使用它。在大多数情况下,将wpdb::prepare与占位符一起使用最适合于数据库查询。

  • 示例2

    清理数组

    map_deep( $form_data, 'sanitize_text_field' );
  • 示例3

    检查字符串是否为有效的UTF-8字符,并删除所有HTML标记。

    $str = "<h2>Title</h2>";
    sanitize_text_field( $str ); // it will return "title" without any HTML tags!
    
  • 示例4

    我的一个插件在进行初始安全审查时遇到了一个问题,当时我的一个数组没有通过安全检查。sanitize_text_field()函数仅适用于字符串,而不适用于数组项。

    我找到了这段很好的代码,可以正确地清理数组。

    /***
     * To ensure arrays are properly sanitized to WordPress Codex standards,
     * they encourage usage of sanitize_text_field(). That only works with a single
     * variable (string). This function allows for a full blown array to get sanitized
     * properly, while sanitizing each individual value in a key -> value pair.
     *
     * Source: https://wordpress.stackexchange.com/questions/24736/wordpress-sanitize-array
     * Author: Broshi, answered Feb 5 '17 at 9:14
     */
    function wporg_recursive_sanitize_text_field( $array ) {
    	foreach ( $array as $key => &$value ) {
    		if ( is_array( $value ) ) {
    			$value = wporg_recursive_sanitize_text_field( $value );
    		} else {
    			$value = sanitize_text_field( $value );
    		}
    	}
    	return $array;
    }

    嗯,这需要成为WordPress清理函数的核心功能。Lior Broshi是提出这一创造性解决方案的绅士(我已获得他的许可,可以分享这一点)。