使用php的雅虎股票小部件远程调用

时间:2012-09-30 04:24:01

标签: php

我正在使用雅虎的金融股票报价从他们的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”。似乎无法在服务器端找出问题。

1 个答案:

答案 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);