美文网首页
PHP中处理emoji表情

PHP中处理emoji表情

作者: 坚果牛奶 | 来源:发表于2016-11-25 19:52 被阅读678次

今天遇到评论中加入emoji表情导致整个字符存到数据库中为空的情况,出现这种情况是因为mysql数据库表用的utf-8字符集也就是3字节,但emoji表情是4字节,导致无法insert.

下面写下怎么存到数据库和怎么清除掉emoji.

PHP中将emoji表情存储到mysql数据库

  • 修改数据库字符集

  • 将对应的表字符集改为utf8mb4,排序规则改为utf8mb4_unicode_ci

  • 将对应的字段的字符集改为utf8mb4,排序规则改为utf8mb4_unicode_ci

  • 修改链接方式

    在数据库的配置文件中将charset改为utf8mb4,将collation改为utf8mb4_unicode_ci。

'mysql' => [
    'host'      => env('DB_HOST_SLAVE_ONE'), 
    'username'  => env('DB_USERNAME_SLAVE_ONE'), 
    'password'  => env('DB_PASSWORD_SLAVE_ONE'),
    'driver'    => 'mysql',   
   'database'  => env('DB_DATABASE'),    
   'charset'   => 'utf8mb4',    
  'collation' => 'utf8mb4_unicode_ci',
  'prefix'    => '',    
  'strict'    => false,],

记得重启mysql,嗯,一定要重启。

PHP将emoji从字符串中清除

步骤:

  • 将字符中原有?替换掉

  • 将字符串从utf-8转为iso-8859-1

  • 再还原回utf-8(mb_convert_encoding函数会将无效的字符转为?

  • 将这些无效的?''替换掉

  • 将最初的?还原回来

代码如下:

function removeEmojis( $string ) 
{ 
        $string = str_replace( "?", "{%}", $string ); 
        $string = mb_convert_encoding( $string, "ISO-8859-1", "UTF-8" ); 
        $string = mb_convert_encoding( $string, "UTF-8", "ISO-8859-1" ); 
        $string = str_replace( array( "?", "? ", " ?" ), array(""), $string ); 
        $string = str_replace( "{%}", "?", $string ); 
        return trim( $string );
}

验证字符串中是否含有emoji表情

还有些情况是我们直接验证,如果含有emoji表情则报格式错误,代码如下。

public function findEmoji($source){
    $mat = [];
    preg_match_all('/./u', $source,$mat);
    foreach ($mat[0] as $v){
        if(strlen($v) > 3){return true;}
    }
    return false;
}

相关文章

  • PHP中处理emoji表情

    今天遇到评论中加入emoji表情导致整个字符存到数据库中为空的情况,出现这种情况是因为mysql数据库表用的utf...

  • PHP处理emoji表情

    最近项目中用户反映发表文章文字保存不全,经过检查发现是emoji表情造成,在使用MySQL直接存储的时候 没有存进...

  • PHP处理字符中的emoji表情

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

  • [原创]帝国cms模板中支持emoji表情的方法

    在帝国cms中如果发布的内容中包含了emoji表情,保存的时候会出错。如果我们想保留emoji表情,要怎么处理呢?...

  • emoji表情处理

    iOS不倒,博客不停好久没有更新简书了,因为新公司,真的很忙!前几天一直忙emoji,正好阳光明媚就记录一下 em...

  • iOS开发: 将十六进制的编码转为 emoji 字符串

    emoji表情键盘如下: 在OC中, emoji表情的十六进制编码如下: 想要将emoji表情的十六进制编码转成具...

  • emoji表情处理,emoji表情的编码解码

    emoji表情的编码解码 该方法实体编码后内容在页面是可以直接显示的,不需要解码,只有在js中才需要解码,同名的p...

  • 自己收集并使用的一些正则表达式

    1.可以用来过滤表情 匹配中文字母 过滤表情 2.匹配地址中的省市区 3.处理敏感词汇 4.emoji表情处理...

  • Mysql Emoji表情处理

    1.转码存储 将内容转码存储 如:转成 Unicode 存储,取出来时在解码 2.过滤 Emoji PHP 3....

  • iOS—emoji表情处理

    在发送网络请求时,由于用户输入了emoji表情,服务端返回错误提示信息。为了解决服务器不能验证emoji编码的问题...

网友评论

      本文标题:PHP中处理emoji表情

      本文链接:https://www.haomeiwen.com/subject/ktjwpttx.html