据说微信中的表情符号是utf8-mb4的,一个字符占4个字节,如果对应的mysql没有开启mb4的话,就会出错。
我在开发帝国cms微信登录的过程中,发现如果有特殊字符,不报错,但是一个insert指令会保存两条记录,妥妥的郁闷了。
以下为百度到的过滤特殊字符的办法,保留备用:
<?php $aa="www.zhongyf.com"; $bb='hello '.'jiuhecai的龠网㋛站❧是★中薌qi药方⊙v9大全☺:'.$aa.PHP_EOL; // 过滤掉emoji表情 function filterEmoji($str) { $str = preg_replace_callback( '/./u', function (array $match) { echo strlen($match[0]).PHP_EOL; return strlen($match[0]) >= 4 ? '' : $match[0]; }, $str); return $str; } $username= filterEmoji($bb); echo $username=addslashes(RepPostStr(RepPostVar($username))); ?>