我在本地构建了一个可以正常工作的脚本。我现在已将该脚本移到代理服务器后面的服务器上,我遇到了一些问题。
以下是代码:
$yahooXML = simplexml_load_file('http://query.yahooapis.com/v1/public/yql?q=select+*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22'.$from.''.$to.'%22)&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys');
print_r($yahooXML);
die();
我收到无法打开的流和I / O警告:使用此方法无法加载外部实体错误。
我探索了使用cURL加载数据,然后使用simplexml解析但不确定这是否可行?
任何想法?
编辑:
我加载了CURL页面也失败了所以我添加了代理选项并修复了它。现在我只需要用XML加载它吗?
function curl($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_PROXY, 'proxysg.uwe.ac.uk:8080');
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$feed = 'http://query.yahooapis.com/v1/public/yql?q=select+*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22'.$from.''.$to.'%22)&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys';
$data = curl($feed);
echo $data;
die();
答案 0 :(得分:0)
获得XML文件后,您已经确认它是正确的XML,您可以通过simplexml_load_string()或simplexml_load_file()将其加载到php中,具体取决于您拥有的内容。
如果你的$ data var是一个字符串w /格式良好的XML,那么:
$xml = simplexml_load_string($data);
print_r($xml);
应该工作得很好。当然,现在你有一个简单的xml对象,它可以用于任何普通的simplexml函数。