今天用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));