[PHP] 过滤掉emoji等无法存入MySQL数据库的字符 →→→→→进入此内容的聊天室

来自 , 2020-03-13, 写在 PHP, 查看 106 次.
URL http://www.code666.cn/view/285da219
  1. /**
  2. *方法一:
  3. *匹配中英文、以及数字等过滤掉emoji
  4. *最后字符串中只剩下中英文、以及数字
  5. */
  6. function delEmomji($str){
  7.        
  8.         $pattern = '/[\w\x{4e00}-\x{9fa5}]+/u';
  9.        
  10.         preg_match_all($pattern,$str,$matchs);
  11.        
  12.         //遍历匹配结果
  13.  
  14.         $result = '';
  15.        
  16.         foreach($matchs[0] as $value){
  17.  
  18.                
  19.                 $result.= $value;
  20.        
  21.         }
  22.        
  23.         return $result;
  24.  
  25. }
  26. /**
  27. *方法二:
  28. * 直接删除法
  29. * 由于单个emoji字符的长度为4个字节,而我们使用的MySQL数据的utf-8编码最长只支持3字节字符,
  30. * 所以插入emoji表情时会报错,最终的解决方案是将MySQL的编码修改为utf8mb4。
  31. */
  32.  
  33. function filterEmoji($str)
  34. {
  35.     $str = preg_replace_callback(
  36.         '/./u',
  37.         function (array $match) {
  38.             return strlen($match[0]) >= 4 ? '' : $match[0];
  39.         },
  40.  
  41.         $str);
  42.  
  43.     return $str;
  44. }

回复 "过滤掉emoji等无法存入MySQL数据库的字符"

这儿你可以回复上面这条便签

captcha