【PHP】过滤不完整的UTF-8字符的函数
用IE打开某个XML文件时提示“无法显示XML页”,具体错误为“文本内容中发现无效字符”。用Notepad打开文件后发现有不完整字符,如下:
于是也就想到写个函数来过滤,具体如下,实验有效
/* * 过滤不完整的UTF8字符,UTF8的合法字符范围为: * 一字节字符:0x00-0x7F * 二字节字符:0xC0-0xDF 0x80-0xBF * 三字节字符:0xE0-0xEF 0x80-0xBF 0x80-0xBF * 四字节字符:0xF0-0xF7 0x80-0xBF 0x80-0xBF 0x80-0xBF */ function FilterPartialUTF8Char($str) { $str = preg_replace("/[\\xC0-\\xDF](?=[\\x00-\\x7F\\xC0-\\xDF\\xE0-\\xEF\\xF0-\\xF7]|$)/", "", $str); $str = preg_replace("/[\\xE0-\\xEF][\\x80-\\xBF]{0,1}(?=[\\x00-\\x7F\\xC0-\\xDF\\xE0-\\xEF\\xF0-\\xF7]|$)/", "", $str); $str = preg_replace("/[\\xF0-\\xF7][\\x80-\\xBF]{0,2}(?=[\\x00-\\x7F\\xC0-\\xDF\\xE0-\\xEF\\xF0-\\xF7]|$)/", "", $str); return $str; }参考:字符编码笔记:ASCII、Unicode、UTF-8、UTF-16、UCS、BOM、Endian
标签: PHP
还没有人抢沙发呢~