【问题标题】:PHP Reading currency quotes when "allow_url_fopen=0"PHP 在“allow_url_fopen=0”时读取货币报价
【发布时间】:2014-05-14 20:27:28
【问题描述】:

我需要新的 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,但在 Yahoo 上没有成功。

最后我摆脱了雅虎并成功使用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'};

【问题讨论】:

  • 你可以使用 CURL 库吗?
  • cURL()?
  • 我不知道。请发一个代码,我试试看。
  • 对于投反对票的“专家”,请解释一下??
  • 我没有投反对票.. 但我认为这可能与您的评论有关:Please post a code and I'll try it - 所以不是“给我写代码”方面..但您应该先尝试然后再来如果您有问题,请回到这里

标签: php currency remote-access yahoo-finance


【解决方案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);

【讨论】:

  • 谢谢 Epik。不幸的是,我收到所有卷曲线的“curl_setopt() 期望参数 1 是资源,给定 null”。
  • 忘记添加 curl_init();功能。固定。
  • 感谢您的修复。现在又出现了一个问题。我将“open_basedir”设置为“/nfs:/tmp:/usr/local:/etc/apache2/gs-bin”,这会引发错误:“CURLOPT_FOLLOWLOCATION 无法激活”。有什么想法吗?
  • 移除 curl_setopt($ch,CURLOPT_FOLLOWLOCATION, true);或将其设置为 false。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-03
  • 1970-01-01
相关资源
最近更新 更多