目前 WordPress 数据库字段已经采用了utf8mb4格式,即已经支持 emoji 等4个字节的字符。但是还有一些 utf8mb4 还不支持的字符,那么怎么去掉这些字符呢?可以使用下面这个函数,在你的 WordPress主题 functions.php 中插入:
function rm_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); }