博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP转换emoji表情为HTML字符实体
阅读量:6328 次
发布时间:2019-06-22

本文共 892 字,大约阅读时间需要 2 分钟。

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


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

代码如下:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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 自行修改。

本文转自  ttlxihuan    51CTO博客,原文链接:http://blog.51cto.com/php2012web/1863313

转载地址:http://wlwoa.baihongyu.com/

你可能感兴趣的文章
Hello World
查看>>
Spring3全注解配置
查看>>
ThreadLocal真会内存泄露?
查看>>
IntelliJ IDEA
查看>>
低版本mybatis不能用PageHeper插件的时候用这个分页
查看>>
javaweb使用自定义id,快速编码与生成ID
查看>>
[leetcode] Add Two Numbers
查看>>
elasticsearch suggest 的几种使用-completion 的基本 使用
查看>>
04-【MongoDB入门教程】mongo命令行
查看>>
Hadoop HA元数据备份
查看>>
字符串与整数之间的转换
查看>>
断点传输HTTP和URL协议
查看>>
redis 数据类型详解 以及 redis适用场景场合
查看>>
mysql服务器的主从配置
查看>>
巧用AJAX技术,通过updatePanel控件实现局部刷新
查看>>
20140420技术交流活动总结
查看>>
SaltStack配置salt-api
查看>>
各种情况下block的类型
查看>>
ThinkPHP 3.2.x 集成极光推送指北
查看>>
MYSQL 表情评论存储(emoji)
查看>>