0

我正在使用 yahoo 的金融股票报价从他们的 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) 中运行良好,即 $values 被回显。但是当我将此文件上传到我的服务器时,它会打印出 URL: http: //quote.yahoo.com/d/quotes.csv ?s=appl&f=sl1d1t1c1ohgv&e=.csv 。我知道服务器上的 file_get_contents 存在一些问题。甚至 allow_url_fopen 在服务器上设置为“打开”。似乎无法找出服务器端的问题。

4

1 回答 1

0

您可能遇到服务器设置问题,不允许您使用file_get_contents(). curl在尝试从其他域中提取内容时,PHP将成为您的朋友。

我刚刚发现了这个很棒的小片段: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);    
于 2012-09-30T04:33:41.283 回答