json_decode控制字符处理

2019-06-17  |  技术  |  144 views

问题

    php中使用json_decode时,发现decode出来的结果是NULL。看日志,传入的参数的确是一个合法的json字符串,但decode之后却是为空,实在是让人抓不住头脑。

调试

    想到php里面有个 json_last_error 的方法,根据官方说法,会返回 JSON 编码解码时最后发生的错误。加上后一看,果然,decode出问题了。返回的错误是 JSON_ERROR_CTRL_CHAR,表示控制字符错误,可能是编码不对。

    这难道是字符串里面混入了控制字符?不多想,遂上网查了下解决方法。

解决

    解决方法其实很简单,就是执行一个正则表达式搜索和替换控制字符

preg_replace( '/[\x00-\x1F]/','',$str);

发表新评论