PHP中处理emoji表情

2016-11-25  本文已影响678人  坚果牛奶

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

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

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

'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从字符串中清除

步骤:

代码如下:

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;
}
上一篇下一篇

猜你喜欢

热点阅读