{"response_time":8999,"object":"http://10.1.17.61:80/v1/verify"},{"response_time":17000,"object":"http://10.1.17.61:80/v1/verify"}],"err_query":[],"resource_type":8,"request_count":6870,"response_time_total":7152990,"response_time":{"start_0_end_1000000":6870},"resource_name":"http://[rpc]token-internal.user.wxsqidc.cn/[10.1.17.61:80]/v1/verify","http_status_code":{"200":6870},"cross_machine_room":"\xE5\xB9\xBF\xE5\xB7\x9E\xE4\xB8\xAD\xE8\x83\xBD-->\xE5\xB9\xBF\xE5\xB7\x9E\xE4\xB8\xAD\xE8\x83\xBD"}
就是字符串里带了很多 \x**的东西,导致 PHPjson_decode失败,我只知道 \x5C 就是反斜杠 " \x22就是单个双引号" 那么其它呢,如何解决?
---后面补充 :查到了,\x** 的东西就是 16进制字符,有一个在线转码网站,复制进去转出来是乱码来的,字符内容是其它人上报过来的,叫他们上报进规范处理可能可能使自己工作比较被动,那么,自己就无法处理了吗?
5 回答
Smart猫小萌
TA贡献1911条经验 获得超7个赞
要求这个接口提供标准的json数据
使用以下函数替换一下
$str = "\\xE5\\xB9\\xBF\\xE5\\xB7\\x9E\\xE4\\xB8\\xAD\\xE8\\x83\\xBD-->\\xE5\\xB9\\xBF\\xE5\\xB7\\x9E\\xE4\\xB8\\xAD\\xE8\\x83\\xBD";
$rs = preg_replace_callback('/\\\\x(\w{2})/', function ($m) {
return hex2bin($m[1]);
}, $str);
var_dump($rs);
幕布斯6054654
TA贡献1876条经验 获得超7个赞
你的json数据都没复制对吧,数据明显有问题,我只截取了16进制那块,代码如下:
$json = '{"cross_machine_room":"\xE5\xB9\xBF\xE5\xB7\x9E\xE4\xB8\xAD\xE8\x83\xBD-->\xE5\xB9\xBF\xE5\xB7\x9E\xE4\xB8\xAD\xE8\x83\xBD"}';
// 将16进制转10进制
$json2 = preg_replace_callback("/\\\[xA-F0-9]{3}/", function($match) {return hexdec($match[0]);}, $json);
$data = json_decode($json2, true);
- 5 回答
- 0 关注
- 455 浏览
添加回答
举报
0/150
提交
取消