PHP“allow_url_fopen = 0”时读取货币报价

时间:2014-05-14 20:27:29

标签: php currency remote-access yahoo-finance

我需要一个新的EURUSD报价来在网站上显示我的产品价格。

我正在尝试使用以下代码阅读雅虎财经的报价:

$eurUsd = 1.3700; // Default value 
$yahooUrl = 'http://finance.yahoo.com/d/quotes.csv?f=l1&s=EURUSD=X';
$handle = fopen($yahooUrl, 'r');
if ($handle) {
    $result = fgetcsv($handle);
    fclose($handle);
    $eurUsd = $result[0];
}

此代码在我的测试环境中运行良好,但在我的网站中没有,因为我有“allow_url_fopen = 0”。出于安全原因,我不想改变它。

我正在使用的请求返回一个字符串,如:

1.3715

你知道我怎么能以其他方式读取字符串吗?

您是否知道另一种获取EURUSD报价的方法?

修改

感谢Epik的代码我尝试使用curl,但雅虎没有成功。

最后,我摆脱雅虎,并以Rate Exchange JSON/JSONP APIs

取得成功

工作解决方案:

$url = 'http://rate-exchange.appspot.com/currency?from=EUR&to=USD';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
$eurUsd = json_decode($result)->{'rate'};

1 个答案:

答案 0 :(得分:1)

    $ch = curl_init();
    $url = 'http://finance.yahoo.com/d/quotes.csv?f=l1&s=EURUSD=X';
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);