PHP转换emoji表情为HTML字符实体
移动端输入时允许输入表情,表情实际上是UTF-16编码,在数据库存储上会存在丢失,当前如果把数据库字码编码修改为 utf8mb4 也是可以保存。
如果不想修改其它则可以通过转换把这些表情符转换为HTML字符实体保存。
代码如下:
functionutf16_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 自行修改。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。