utf8 utf8mb4 emoji

utf8字符 字节数是1-4 而mysql5的utf8的字节数最大是3
用户输入的特殊字符是 Emoji表情 ,Emoji表情 是四字节的 所以存不进去 。
utf8mb4则扩展到一个字符最多能有4字节 。
所以解决那个bug可以 修改字符集 ,也可以 直接过滤四字节的字符。

😊
[php]

preg_match(‘/\x{d83d}\x{de04}/u’, $str_with_smail_emotion, $matches);

echo preg_match(‘%^(?:
#\xF0[\x80-\xBF]{3} # planes 1-3
[\x00-\xFF]{4} # planes 4-15
)*$%xs’, ‘😊’);
$str = ‘法撒旦法撒😊飞洒发送到’;
echo $str ;
echo preg_replace(‘/[\x{10000}-\x{10FFFF}]/u’, ”, $str );
[/php]
😊

3 Responses so far.

  1. 一元营销说道:
    确实不错,这个要实话实说!
  2. 增达信购说道:
    博文值得拜读。受益了!
  3. zengda说道:
    研究研究,学习学习。

LEAVE A COMMENT