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が「ON」に設定されています。サーバー側で問題を理解できないようです。

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 に答える