$json_data=file_get_contents('http://www.btc38.com/trade/getTradeList.php?coinname=XRP');
$data=json_decode($json_data,true);
var_dump($data);//为什么仍然输出字符串????
ps:在jslint.com 测试$json_data为valid
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
BOM!
我直接 echo 从网页获取到的内容,然后传递给 json_pp:
确实挺奇怪的,运行如上代码,使用
json_last_error()
最终提示的是语法错误
。根据错误关键词搜索到SO中的这个问题:json_decode returns JSON_ERROR_SYNTAX but online formatter says the JSON is OK 情况比较类似。按照答案之一说的怀疑了一下编码问题,不过看了下是UTF-8,没有问题。单纯的复制页面中的字符串的话是没有问题的(复制到页面和PHP中都没有问题)。这个不算是答案,算是帮助题主补充说明吧,我也还在努力的寻找答案中。
后记
感谢 @依云 的答案,让我明白了原来是可恶的BOM的问题,关于BOM的问题 @依云 的维基百科链接已经很详细了,我就不多说了,这里就说一下怎么去除吧。其实BOM就是在字符串的最开头增加了三个字符,我们把它去除掉就好了。在
json_decode
之前用substr
去除就好了,例如:我这里没有问题啊:
保存到
json_file
然后
结果是
可能是服务器不太稳定,传输的数据错误了。
求截图...