无法通过PHP从URL
问题描述:
我想读JSON六PHP,但无法解码解码JSON无法通过PHP从URL
<?php
$json_url = "http://chartapi.finance.yahoo.com/instrument/1.0/AAPL/chartdata;type=quote;range=5d/json";
$json = file_get_contents($json_url);
$data = json_decode($json, TRUE);
echo "<pre>";
print_r($data);
echo "</pre>";
?>
答
解码之前处理数据如果您访问您的目标网址,您会发现JSON值被包裹在一个 你可以通过类似
$json = str_replace('finance_charts_json_callback(', '', substr($pageContent, 0, strlen($pageContent) - 1));
这里修剪回调方法是如何看起来都放在一起:
<?php
$json_url = "http://chartapi.finance.yahoo.com/instrument/1.0/AAPL/chartdata;type=quote;range=5d/json"; $pageContent = file_get_contents($json_url);
$json = str_replace('finance_charts_json_callback(', '', substr($pageContent, 0, strlen($pageContent) - 1));
$data = json_decode($json, TRUE);
echo "<pre>"; print_r($data); echo "</pre>";
答
一个你可以做的一件事就是带着它工作在JavaScript:
<script>
function finance_charts_json_callback(json){
console.log(json.meta);
}
</script>
<?php
$json_url = "http://chartapi.finance.yahoo.com/instrument/1.0/AAPL/chartdata;type=quote;range=5d/json";
$data = file_get_contents($json_url);
echo "<script>";
print_r($data);
echo "</script>";
?>
其他事情是尽量去除“功能”部分:
<?php
$json_url = "http://chartapi.finance.yahoo.com/instrument/1.0/AAPL/chartdata;type=quote;range=5d/json";
$json = file_get_contents($json_url);
$json = substr($json, 30);
$json = substr($json, 0, strlen($json)-2);
$data = json_decode($json, TRUE);
echo "<pre>";
print_r($data);
echo "</pre>";
?>
+0
非常感谢你 –
答
从该服务的响应不是有效的JSON对象的JSONP,你守ld寻找一个提供输出为JSON的服务。
如果他们不提供服务一样,你可以使用此解决办法
$data = str_replace('finance_charts_json_callback(', '', $data);
$data = str_replace(')', '', $data);
+0
感谢分享你的知识 –
你也可以找到解码JSONP的一些通用解决方案http://stackoverflow.com/questions/5081557/extract-jsonp-resultset-in-php – Ali
谢谢你的工作 –