最新版的 WordPress 数据字段格式已经升级为:utf8mb4,就是说支持 emoji 等4个字节的字符,但是在开发的时候发现用户还是会输入一些 utf8mb4 还不支持的字符,都不知道这些神人怎么输入的。
那么怎么去掉这些字符呢?可以使用下面这个函数:
function wpjam_strip_invalid_text($str){
$regex = '/
(
(?: [\x00-\x7F] # single-byte sequences 0xxxxxxx
| [\xC2-\xDF][\x80-\xBF] # double-byte sequences 110xxxxx 10xxxxxx
| \xE0[\xA0-\xBF][\x80-\xBF] # triple-byte sequences 1110xxxx 10xxxxxx * 2
| [\xE1-\xEC][\x80-\xBF]{2}
| \xED[\x80-\x9F][\x80-\xBF]
| [\xEE-\xEF][\x80-\xBF]{2}
| \xF0[\x90-\xBF][\x80-\xBF]{2} # four-byte sequences 11110xxx 10xxxxxx * 3
| [\xF1-\xF3][\x80-\xBF]{3}
| \xF4[\x80-\x8F][\x80-\xBF]{2}
){1,50} # ...one or more times
)
| . # anything else
/x';
return preg_replace($regex, '$1', $str);
}