Php 以编程方式访问货币汇率

Php 以编程方式访问货币汇率,php,currency,finance,Php,Currency,Finance,我正在建立一个在线订购系统,但我在澳大利亚,对于国际客户,我希望以美元或欧元显示价格,这样他们就不必费心从澳元兑换 有人知道我是否可以从网上以一种易于解析的格式获取最新的汇率,我可以从我的PHP脚本访问这种格式吗 更新:我现在已经编写了一个PHP类来实现这一点 coinnill.com有一种web服务 例如,将为您提供澳元-->美元汇率。您只需要解析返回的XML。提供了汇率的提要。但不是免费的。这里有一个提供汇率的Soap服务 本网站免费提供货币兑换服务: 您可以从yahoo获得简单格式的货

我正在建立一个在线订购系统,但我在澳大利亚,对于国际客户,我希望以美元或欧元显示价格,这样他们就不必费心从澳元兑换

有人知道我是否可以从网上以一种易于解析的格式获取最新的汇率,我可以从我的PHP脚本访问这种格式吗



更新:我现在已经编写了一个PHP类来实现这一点

coinnill.com有一种web服务


例如,将为您提供澳元-->美元汇率。您只需要解析返回的XML。

提供了汇率的提要。但不是免费的。

这里有一个提供汇率的Soap服务


本网站免费提供货币兑换服务:


您可以从yahoo获得简单格式的货币兑换:

例如,要将英镑转换为欧元:
http://download.finance.yahoo.com/d/quotes.csv?s=GBPEUR=X&f=sl1d1t1ba&e=.csv

也许可以添加

到名单上

官方参考利率由欧洲中央银行体系内外的中央银行根据日常协调程序提供

该提要以XML和XML格式提供。

更新通常在欧洲中央银行时间(法兰克福时间)下午2:15(14:15)进行

Oanda.com将汇率作为XML API公开,但不是免费的

这个答案已经很晚了,但是上面的答案中缺少了一点关键信息

如果你想向你的客户展示准确的价格,了解汇率是如何运作的是很重要的

大多数外汇服务只报即期汇率(在买入和卖出之间)。现货是汇率的一种简写,但没有人能得到现货,因为你只能按买入价卖出或按卖出价买入。你通常会看到他们之间至少有1%的差价,所以你的客户的即期汇率是0.5%的折扣

但这并不止于此,你的客户几乎可以肯定使用的是信用卡,Visa/Mastercard/Amex都收取外汇费用。根据我的经验,这些都是不平凡的,至少2.5%。例如,澳大利亚花旗银行收取3.3%的费用。这些价格因卡而异,因此您无法预测您的客户将收取的最终价格

如果你想根据汇率向你的客户报一个“准确”的价格,你需要考虑上述因素,并提供一个缓冲区,这样你就不会收取超过你所报价格的费用


FWIW,我已经在F/X转换中添加了4%的内容。我觉得有必要添加:

使用干净的RESTful API非常简单,注册需要5秒钟。包括大多数主要语言的编码示例,大多数为2-3行


费率每小时更新一次,所以大多数情况下都可以,每月7美元就可以收到30000条查询。我从来没有需要过更多,但是对于更高的交易量,汇率是非常合理的。

我将开放数据表添加到YQL中,您可以使用它从yahoo.finance检索汇率数据


逗号分隔格式比“where pair in('EURUSD','gbpud')更可取,但无论如何,您可以同时使用这两种格式,甚至可以将它们混合使用。

RESTful(我不确定这是否真的是REST,因为我最初从SOAP获得它,我只是尝试使用HTTP GET访问它)

另一个非常棒的免费开源链接是:


(我在这里发现:)
[更新]:
开放式汇率项目数据已从GitHub移出。
可于以下地点索取:
JSON格式的数据可从以下网址获得:

无访问费、无费率限制、无难看的XML—只需免费、每小时更新JSON格式的汇率。
这不是“完全”免费的。新的授权规定每月最多允许1000次点击,然后你需要付费。如果您想使用单一货币转换器(基本功能),您还需要付费


[注意:您可能还需要查看答案。]

iGoogle于2013年11月1日退休。此API不再有效。 要获得汇率,您可以使用以下内容:

function get_exchange_rate($from, $to){
    $data = file_get_contents("http://www.google.com/ig/calculator?hl=en&q=1{$from}=?{$to}");
    preg_match('/rhs\:\s?"([0-9\.]+)/', $data, $m);
    return $m[1];
}
http://www.google.com/ig/calculator?hl=en&q=1GBP=?USD
{lhs: "1 British pound",rhs: "1.6132 U.S. dollars",error: "",icc: true}
您可以在其中添加一个DB缓存,以确保不会受到限制等


正如在其他帖子/评论中所指出的那样,你可以使用这个汇率来计算你的货币

我最近也实现了同样的功能,但使用的是谷歌的API。查询URL如下所示:

function get_exchange_rate($from, $to){
    $data = file_get_contents("http://www.google.com/ig/calculator?hl=en&q=1{$from}=?{$to}");
    preg_match('/rhs\:\s?"([0-9\.]+)/', $data, $m);
    return $m[1];
}
http://www.google.com/ig/calculator?hl=en&q=1GBP=?USD
{lhs: "1 British pound",rhs: "1.6132 U.S. dollars",error: "",icc: true}
它需要3个参数。第一个参数是金额,后面是要转换的货币代码、等号和问号,以及要转换的货币代码。你可以找到谷歌支持的代码列表。对查询的响应如下所示:

function get_exchange_rate($from, $to){
    $data = file_get_contents("http://www.google.com/ig/calculator?hl=en&q=1{$from}=?{$to}");
    preg_match('/rhs\:\s?"([0-9\.]+)/', $data, $m);
    return $m[1];
}
http://www.google.com/ig/calculator?hl=en&q=1GBP=?USD
{lhs: "1 British pound",rhs: "1.6132 U.S. dollars",error: "",icc: true}
这是不言自明的,所以我在这里不详细介绍。以下是我处理查询响应的方式:

function convert_currency($amount, $from_code, $to_code){
    ini_set('max_execution_time', 60);
    $temp = 'http://www.google.com/ig/calculator?hl=en&q=' . $amount . $from_code . '=?' . $to_code;

    $response = file_get_contents($temp);
    $result_string = explode('"', $response);

    $final_result = $result_string['3'];

    $float_result = preg_replace("/[^0-9\.]/", '', $full_result);

    return $float_result;
}

我相信这远不是最优雅的方式,但我对PHP还是相当陌生的。希望有帮助

这对我有用


货币汇率API:

该数据似乎已过时。上面说澳元是0.77,但我知道今天是0.69。而且,有用的数据(汇率)是唯一没有用XML编码的位!它只是CDATA中的纯文本…它是最新的,并且易于解析。这就是我所追求的。我对此也很感兴趣,有关于参数代表什么的信息吗?特别是“f”参数。我在任何地方都找不到任何信息。如果你有一个商业网站,阅读这些数据合法吗?进一步的实验表明,你可以通过逗号分隔“s”参数中的符号,一次请求多个转换率,如下所示:有没有办法指定日期?遗憾的是,这是SOAP而不是REST。除此之外,这是一个有用的设施。这是免费和稳定的吗?我能提供依赖于此的软件吗?显然他们停止了doi