gpt4 book ai didi

PHP 将特殊字符转换为 HTML 实体

转载 作者:可可西里 更新时间:2023-10-31 23:15:59 24 4
gpt4 key购买 nike

我有一个字符串 ex:

$a = 'abc🔹abc';

“小蓝钻”是:bin2hex('🔹') => f09f94b9

Small blue diamond representation

所以,我想将 $a 字符串转换为代表带有 HTML 转义符的蓝色小菱形的字符串:🔹

我应该调用什么函数来将所有 unicode 字符转换为 HTML 转义表示形式?

有关此案例的更多详细信息

在 WordPress 中,当我想将 $a 变量插入到表中时,$wpdb 会进行检查。 Link to WPDB source code

当 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 表示'small blue diamond'时,此正则表达式将数据标记为无效。当用🔹表示时。所以我需要的是将该 unicode 字符转换为 WordPress 接受的表示形式。

最佳答案

这是我想出的转换所有字符的方法,您可以进一步修改它以仅转换您需要范围内的字符。

$s = 'abc🔹def';
$a = preg_split('//u', $s, null, PREG_SPLIT_NO_EMPTY);

foreach($a as $c){
echo '&#' . unpack('V', iconv('UTF-8', 'UCS-4LE', $c))[1] . ';';
}

关于PHP 将特殊字符转换为 HTML 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42255682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com