PHP处理字符中的emoji表情

举报
lxw1844912514 发表于 2022/03/27 01:49:10 2022/03/27
【摘要】 目录 判断字符串中是否含有 emoji 表情移除字符串中的 emoji 表情含有 emoji 表情的字符串在 MySQL 中的储存 utf-8 编码的 emoji 表情或者某些特殊字符占用 4 个字节。utf-8 编码的常用中文字符占用 3 个字节。 判断字符串中是否含有 emoji 表情 三个 PHP 内置函数: mb_str...

目录

utf-8 编码的 emoji 表情或者某些特殊字符占用 4 个字节。utf-8 编码的常用中文字符占用 3 个字节。

判断字符串中是否含有 emoji 表情

三个 PHP 内置函数:

  • mb_strlen

  
  1. mixed mb_strlen ( string $str [, string $encoding = mb_internal_encoding() ] )
  2. // 返回具有 encoding 编码的字符串 str 包含的字符数。 多字节的字符被计为 1。
  3. // 如果给定的 encoding 无效则返回 FALSE。
  • mb_substr

  
  1. string mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] )
  2. // 根据字符数执行一个多字节安全的 substr() 操作。 位置是从 str 的开始位置进行计数。 第一个字符的位置是 0。第二个字符的位置是 1。
  3. // mb_substr() 函数根据 start 和 length 参数返回 str 中指定的部分。
  • strlen

  
  1. int strlen ( string $string )
  2. // 返回给定的字符串 string 的长度。

函数如下:


  
  1. function haveEmojiChar($str)
  2. {
  3. $mbLen = mb_strlen($str);
  4. $strArr = [];
  5. for ($i = 0; $i < $mbLen; $i++) {
  6. $strArr[] = mb_substr($str, $i, 1, 'utf-8');
  7. if (strlen($strArr[$i]) >= 4) {
  8. return true;
  9. }
  10. }
  11. return false;
  12. }

移除字符串中的 emoji 表情

函数如下:


  
  1. function removeEmojiChar($str)
  2. {
  3. $mbLen = mb_strlen($str);
  4. $strArr = [];
  5. for ($i = 0; $i < $mbLen; $i++) {
  6. $mbSubstr = mb_substr($str, $i, 1, 'utf-8');
  7. if (strlen($mbSubstr) >= 4) {
  8. continue;
  9. }
  10. $strArr[] = $mbSubstr;
  11. }
  12. return implode('', $strArr);
  13. }

含有 emoji 表情的字符串在 MySQL 中的储存

  1. MySQL 中使用 utf8mb4 字符集。
  2. PHP 对字符串进行 base64 编码,从数据库中取出时再对字符串进行解码。
  3. 直接移除字符串中的 emoji 表情(该方法简单粗暴)

文章来源: blog.csdn.net,作者:lxw1844912514,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/lxw1844912514/article/details/105809685

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。