首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP将特殊字符转换为HTML实体

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

Stack Overflow用户
提问于 2017-02-16 00:59:52
回答 1查看 817关注 0票数 4

我有一个字符串ex:

$a = 'abc?abc';

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

Small blue diamond representation

因此,我想使用HTML- $a:🔹将转义字符串转换为表示小蓝色菱形的字符串

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

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

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

当WordPress准备要插入或更新的$data时,它会运行$wpdb->strip_invalid_text方法上的字段,然后检查在$data中是否发现任何无效的内容。如果使用以下正则表达式,$a变量中的文本无效:

代码语言:javascript
复制
                $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可以接受的表示形式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-16 01:51:13

这是我想出的转换所有字符的方法,你可以进一步修改它,只转换你需要的字符。

代码语言:javascript
复制
$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] . ';';
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42255682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档