3种方式来缓解在PHP开发的emoji表情的问题
背景当WeChat开发的,它会发现,它是商店的微信昵称必不可少。
但这个邪恶的微信支持Emoji表情作为昵称,这是有点痛苦。
当一般的MySQL表的设计,UTF8字符集使用。Emoji的绰号是去插入里面,和整个领域成为一个空字符串。有什么事吗
原来,因为MySQL的utf8的字符集是3个字节,和表情符号是4个字节,整个昵称不能保存。你想用它做什么让我介绍几种方法
解决方案
1。使用utf8mb4字符集
如果你的版本的MySQL是> = 5.5.3版本,可以直接升级为直接向utf8mb4字符集
这4字节UTF8编码与老3字节UTF8字符集完全兼容,可以直接存储Emoji表情,这是最好的解决方案。
至于字节增加造成的性能损失,我看到一些评论,几乎可以忽略不计。
2。使用Base64编码
如果你不能用utf8mb4因为某些原因,你也可以使用Base64救国
表情是使用功能,如base64_encode可以直接存储在UTF8字节集数据表的编码和解码,当取出
三.摆脱了Emoji表情
Emoji表情是一件麻烦的事情,即使你能保存它,它不必是一个完美的展示。在iOS平台,如PC或Android。如果你需要显示表情符号,你要准备很多表情图片和使用第三方类库即使前端。因此,它不可能是不可能的表情符号出现在大多数的业务场景,因为没有足够的表情图像。我们可以想想妥善保存所有费用
经过艰苦的眉目传情,我们终于找到了代码,可以使用。
/ /过滤Emoji表情
功能filteremoji($str)
{
$str = preg_replace_callback (
,
函数(数组匹配){
返回strlen($匹配{ 0 })> = 4美元的比赛:{ 0 };
},
美元);
返回$ STR;
}
以上是PHP微信发展综述涉及的emoji表情几种加工方法,其基本思想是在字符串中的每个字符遍历,如果该字符的长度是4字节,它将被删除。希望大家喜欢!