WordPress 技巧:去除非法字符

最新版的 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);
}