PHP转换emoji表情为HTML字符实体

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP转换emoji表情为HTML字符实体相关的知识,希望对你有一定的参考价值。

移动端输入时允许输入表情,表情实际上是UTF-16编码,在数据库存储上会存在丢失,当前如果把数据库字码编码修改为 utf8mb4 也是可以保存。


如果不想修改其它则可以通过转换把这些表情符转换为html字符实体保存。

代码如下:


function utf16_to_entities(){
    $content = mb_convert_encoding($content, ‘utf-16‘);
    $bin = bin2hex($content);
    $arr = str_split($bin, 4);
    $l = count($arr);
    $str = ‘‘;
    for ($n = 0; $n < $l; $n++) {
        if (isset($arr[$n + 1]) && (‘0x‘ . $arr[$n] >= 0xd800 && ‘0x‘ . $arr[$n] <= 0xdbff && ‘0x‘ . $arr[$n + 1] >= 0xdc00 && ‘0x‘ . $arr[$n + 1] <= 0xdfff)) {
            $H = ‘0x‘ . $arr[$n];
            $L = ‘0x‘ . $arr[$n + 1];
            $code = ($H - 0xD800) * 0x400 + 0x10000 + $L - 0xDC00;
            $str.= ‘&#‘ . $code . ‘;‘;
            $n++;
        } else {
            $str.=mb_convert_encoding(hex2bin($arr[$n]),‘utf-8‘,‘utf-16‘);
        }
    }
    return $str;
}


注意:这里字符保存为 utf-8 如果代码所处理的格式为 GBK 自行修改。


本文出自 “秋风扫落叶” 博客,请务必保留此出处http://php2012web.blog.51cto.com/5585213/1863313

以上是关于PHP转换emoji表情为HTML字符实体的主要内容,如果未能解决你的问题,请参考以下文章

怎么将unicode编码转换成emoji表情

如何将4字节utf-8的emoji表情转换为unicode字符编码

emoji表情处理,emoji表情的编码解码

php mysql支持emoji表情方案

PHP-处理emoji表情

微信emoji表情编码 MySQL 存储 emoji 表情符号字符集