php中json_decode返回值为NULL的解决方法

今天用json_decode解析微信返回过来的数据,获取到的数据是完整的json字符串,但是用json_decode解析之后,返回值是NULL,网上的答案大多如下:

json_decode要求的字符串比较严格:
1. 使用UTF-8编码
2. 不能在最后元素有逗号
3. 不能使用单引号
4. 不能有\r,\t,如果有请替换

问题并没有解决,于是就先把字符串进行如下替换,再用json_decode进行解析,完美解决。

原因:含有除以上4点以外的其他破坏json字符串的字符。

    $result =  preg_replace('/[\x00-\x1F\x80-\x9F]/u', '', trim($result));

你可能感兴趣的:(php)