我正在使用雅虎的金融股票报价从他们的api获取股票报价数据。 使用
获取数据$data = file_get_contents("http://quote.yahoo.com/d/quotes.csv?s=appl&f=sl1d1t1c1ohgv&e=.csv");
$values = explode(",", $data);
echo '<pre>';
print_r($values);
现在这在我的本地服务器(localhost)中完全正常,即$值被回显。 但是当我将此文件上传到我的服务器时,它会打印出URL:http://quote.yahoo.com/d/quotes.csv?s=appl&f=sl1d1t1c1ohgv&e=.csv。我知道服务器上的file_get_contents存在一些问题。甚至allow_url_fopen在服务器上设置为“ON”。似乎无法在服务器端找出问题。
答案 0 :(得分:0)
您可能 在服务器设置方面遇到问题而不允许您使用file_get_contents()
。在PHP curl
中,当您尝试从其他域中提取内容时,它将成为您的朋友。
我刚发现这个很棒的小片段:http://snipplr.com/view/4084
这是复制file_get_contents()
功能但使用curl
的功能:
function file_get_contents_curl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Set curl to return the data instead of printing it to the browser.
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
您的新代码如下所示:
$data = file_get_contents_curl("http://quote.yahoo.com/d/quotes.csv?s=appl&f=sl1d1t1c1ohgv&e=.csv");
$values = explode(",", $data);
echo '<pre>';
print_r($values);