描述
- 检查是否有无效的 UTF-8,
- 将单个
<
字符转换为实体 - 剥离所有标签
- 移除换行符、制表符和多余的空格
- 剥离八进制
另见
参数
- $str
-
(string) (必填) 要清理的字符串。
返回
(string) 净化清理后的字符串。
说明
基本用法
<?php sanitize_text_field( $str ) ?>
源码
更新日志
版本 | 描述 |
---|---|
2.9.0 | 开始引入 |
使用示例
此函数不是为了防止SQL注入,因此请不要在数据库查询中使用它。在大多数情况下,将wpdb::prepare与占位符一起使用最适合于数据库查询。
清理数组
map_deep( $form_data, 'sanitize_text_field' );
检查字符串是否为有效的UTF-8字符,并删除所有HTML标记。
$str = "<h2>Title</h2>"; sanitize_text_field( $str ); // it will return "title" without any HTML tags!
我的一个插件在进行初始安全审查时遇到了一个问题,当时我的一个数组没有通过安全检查。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是提出这一创造性解决方案的绅士(我已获得他的许可,可以分享这一点)。