我有一个字符串 ex:
$a = 'abcabc';
“小蓝钻石”的表示方式是:bin2hex('') => f09f94b9
因此,我想将 $a 字符串转换为用 HTML 转义表示的小蓝钻石的字符串:🔹
请问我应该调用哪个函数将所有 Unicode 字符转换为 HTML 转义表示?
更多关于这个案例的细节
在 WordPress 中,当我想将 $a 变量插入表格时,$wpdb 进行检查。 链接到 WPDB 源代码
当 WordPress 准备应该插入或更新的 $data
时,它会在 $wpdb->strip_invalid_text
方法上运行字段,然后检查 $data
中是否有任何无效内容。如果 $a 变量中的文本与以下正则表达式不匹配,则视为无效内容:
$regex = '/
(
(?: [\x00-\x7F] # single-byte sequences 0xxxxxxx
| [\xC2-\xDF][\x80-\xBF] # double-byte sequences 110xxxxx 10xxxxxx
| \xE0[\xA0-\xBF][\x80-\xBF] # triple-byte sequences 1110xxxx 10xxxxxx * 2
| [\xE1-\xEC][\x80-\xBF]{2}
| \xED[\x80-\x9F][\x80-\xBF]
| [\xEE-\xEF][\x80-\xBF]{2}';
if ( 'utf8mb4' === $charset ) {
$regex .= '
| \xF0[\x90-\xBF][\x80-\xBF]{2} # four-byte sequences 11110xxx 10xxxxxx * 3
| [\xF1-\xF3][\x80-\xBF]{3}
| \xF4[\x80-\x8F][\x80-\xBF]{2}
';
}
$regex .= '){1,40} # ...one or more times
)
| . # anything else
/x';
$value['value'] = preg_replace( $regex, '$1', $value['value'] );
if ( false !== $length && mb_strlen( $value['value'], 'UTF-8' ) > $length ) {
$value['value'] = mb_substr( $value['value'], 0, $length, 'UTF-8' );
}
当以f09f94b9
表示的“小蓝钻石”时,这个正则表达式将标记数据无效。当它以🔹
表示时,则需要将该Unicode字符转换为WordPress所接受的表示形式。