/** *方法一: *匹配中英文、以及数字等过滤掉emoji *最后字符串中只剩下中英文、以及数字 */ function delEmomji($str){ $pattern = '/[\w\x{4e00}-\x{9fa5}]+/u'; preg_match_all($pattern,$str,$matchs); //遍历匹配结果 $result = ''; foreach($matchs[0] as $value){ $result.= $value; } return $result; } /** *方法二: * 直接删除法 * 由于单个emoji字符的长度为4个字节,而我们使用的MySQL数据的utf-8编码最长只支持3字节字符, * 所以插入emoji表情时会报错,最终的解决方案是将MySQL的编码修改为utf8mb4。 */ function filterEmoji($str) { $str = preg_replace_callback( '/./u', function (array $match) { return strlen($match[0]) >= 4 ? '' : $match[0]; }, $str); return $str; }