据说微信中的表情符号是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)));
?>
|