入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

php开发中处理emoji表情的问题

创建时间:2018-01-21 投稿人: 浏览次数:107

做与微信相关的开发,我们对于存储微信昵称必不可少。但是在处理微信昵称的时候,我们就会遇到一些麻烦,一般MySQL表设计时,都是用UTF8字符集的。当我们把带有emoji的昵称字段往里面insert时就没了,整个字段变成了空字符串。这是因为MySQLutf8字符集是3字节的,emoji4字节,这样整个昵称就无法存储了。因此,我们要想支持emoji表情,可以通过以下3种方法处理:

1,使用utf8mb4字符集

通过将MySQLMySQL>=5.5.3存储emoji表情字段的字符集设置为utf8mb4字符集的方式实现emoji表情的存储。之前的文章已经说明过这种方式的实现方法,这里就不再过多说明,请参考 MySQL支持emoji表情的存储

2,使用base64编码

如果因为某些原因无法使用utf8mb4的话,我们还可以通过对存储的emoji数据进行base64编码。在存储数据库之前,我们通过base64_encode之类的函数编码可以直接存储在utf8字符集的数据表中,并且在取出时,使用base64_decode解码一下即可。

3,干掉emoji表情

      支持emoji表情是个麻烦的东西,有时即使能存储,也不一定能完美显示。可能会出现因emoji图片不够全而出现无法显示的情况。并且有些客户端可能还需要使用第三方类库,需要大量的emoji图片等。因此,如果emoji不是非要不可,我们可以把带有emoji内容的数据过滤掉,达到不影响其他数据的存储。过滤代码如下:


//过滤掉emoji表情,

function filterEmoji($str)

{

 $str = preg_replace_callback(

   "/./u",

   function(array $match) {

    return strlen($match[0]) >= 4? "" : $match[0];

   },

   $str);

  return $str;

 }


声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像