去除WordPress utf8mb4不支持的非法字符

目前 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);
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注