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.