php剔除非utf-8字符进行json_decode,应对json_decode失败的部分情况 作者: 曾奎 时间: 2017-02-04 分类: php 阅读:次 # 如何处理json中的非法utf8字符 根据utf8的编码范围,是可以剔除掉非法utf8字符的。 可以参见http://magp.ie/2011/01/06/remove-non-utf8-characters-from-string-with-php/ `reject overly long 2 byte sequences, as well as characters above U+10000 and replace with ?` ``` php $some_string = preg_replace('/[\x00-\x08\x10\x0B\x0C\x0E-\x19\x7F]'. '|[\x00-\x7F][\x80-\xBF]+'. '|([\xC0\xC1]|[\xF0-\xFF])[\x80-\xBF]*'. '|[\xC2-\xDF]((?![\x80-\xBF])|[\x80-\xBF]{2,})'. '|[\xE0-\xEF](([\x80-\xBF](?![\x80-\xBF]))|(?![\x80-\xBF]{2})|[\x80-\xBF]{3,})/S', '?', $some_string ); ``` `reject overly long 3 byte sequences and UTF-16 surrogates and replace with ?` ``` php $some_string = preg_replace('/\xE0[\x80-\x9F][\x80-\xBF]'. '|\xED[\xA0-\xBF][\x80-\xBF]/S','?', $some_string ); ``` 这里是把非法字符替换成?,根据需要自己改。 标签: none 相关文章推荐 上一篇: Redux个人理解(一) 下一篇: stu服务器无法访问