正则过滤utf8mb4字符以支持utf8项目

2022-11-16 14:23:20 浏览数 (1)

有些项目不支持utf8mb4字符,虽然可以转换数据库字符编码,但是原生代码并不支持,表情/特殊符号存入数据库报错,或者项目一遇到版本升级或者打补丁就不行了,各种奇怪的错误。最近有个需求是在存入mysql前把utf8mb4字符替换(过滤),然后剩余的utf8字符存入数据库。

代码语言:javascript复制
# 示例1
$str1 = preg_replace('/[x{10000}-x{10FFFF}]/u', '', $str);
var_dump($str1);

# 示例2 包含更多非法字符
function filter_Emoji($string){
    $string = preg_replace('/[x{1F600}-x{1F64F}]/u', '', $string);
    $string = preg_replace('/[x{1F300}-x{1F5FF}]/u', '', $string);
    $string = preg_replace('/[x{1F680}-x{1F6FF}]/u', '', $string);
    $string = preg_replace('/[x{2600}-x{26FF}]/u', '', $string);
    $string = preg_replace('/[x{2700}-x{27BF}]/u', '', $string);
    $string = preg_replace('/[x{10000}-x{10FFFF}]/u', '', $string);
    $string = str_replace(array('"','''), '', $string);
    return addslashes(trim($string));
}

0 人点赞