• 0
  • 0

关于数据中emoji字符处理

2021-06-24 678 0 admin 所属分类:PHP 记录

emoji字符是兴于日韩的字符表情包,能够直观的表达文字情感,备受网络用户喜爱。

在程序开发中不可避免得回遇到这种问题。导致数据显示不全或者丢失,处理方案有三种


① 使用正则表达式直接过滤掉特殊字符

如果说用户名存在emoji字符,会导致数据库(utf8存储)插入时丢失数据。利用的原理就是 emoji字符都是4字节结构,比中文形式(2-3字节)的占用空间大,通过正则表达式只取unicode字符 判断是否属于4字节类型 

// 过滤掉emoji表情
function filter_Emoji($str)
{
   $str = preg_replace_callback(    //执行一个正则表达式搜索并且使用一个回调进行替换
         '/./u',
      function (array $match) {
             return strlen($match[0]) >= 4 ? '' : $match[0];
      },
   $str);
   return $str;
}

② 直接修改数据库结构为utf8mb4字符集 支持emoji字符

字节增大会带来额外的性能损耗

③ 如果不想改变数据库结构,在条件允许下可以采用base64编码 达到曲线救国 取出来使用再解码一下

返回顶部