从Yahooapis获得的货币转换数据,现在的iGoogle是走了 [英] Getting currency conversion data from Yahooapis now that iGoogle is gone

查看:194
本文介绍了从Yahooapis获得的货币转换数据,现在的iGoogle是走了的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

直到昨天我做了一个完美的工作预算主办网站/应用程序与工作的iGoogle

Up until yesterday I had a perfectly working budget organizer site/app working with iGoogle.

通过PHP,使用下面的小行

Through PHP, using the following little line

file_get_contents('http://www.google.com/ig/calculator?hl=en&q=1usd=?eur');

和类似的我能得到我所需要的。

and similar I was able to get all I needed.

截至今天,这不再工作。当我看着这个问题,现在的情况是,谷歌已经退休的iGoogle。坏消息!

As of today, this is no longer working. When I looked into the issue, what has happened is that Google has retired iGoogle. Bummer!

反正我是在其他地方四处寻找,但我无法找到任何符合我的需要。我真的很喜欢刚修好它,得到它只是切换code的这一行再次运行(即改变谷歌的地址与其他一些货币的API提供的地址),但它似乎像没有一样。

Anyway, I was looking around elsewhere but I can't find anything that fits my needs. I would REALLY love to just fix it and get it running again by just switching this one line of code (i.e. changing the Google address with the address of some other currency API available) but it seems like none does.

这rate-exchange.appspot.com的API看起来它可能是一个模拟的iGoogle,但很可惜,它永远不会奏效。我不断收到超过限额的消息。

The API from rate-exchange.appspot.com seems like it could be a iGoogle analog but, alas, it never works. I keep getting an "Over Quota" message.

(下面是一个最初的问题:人在那里认识了一个简单,可靠,的iGoogle排序的API)

(Here comes an initial question: anybody out there know of a simple, reliable, iGoogle-sort API?)

所以我想水到渠成的事情将是雅虎YQL功能(至少我认为它是作为可靠)。

So I guess the natural thing would be to the Yahoo YQL feature (at least I suppose it is as reliable).

雅虎的查询是这样的:

http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.xchange where pair in ("USDEUR", "USDJPY", "USDBGN")&env=store://datatables.org/alltableswithkeys

我真的想不出是如何解析这个数据。它输出的XML。

What I really can't figure out is how to parse this data. It outputs an XML.

我曾经有过是这样的:

function exchange($inputAmount,$inputCurrency,$outputCurrency) {
    $exchange = file_get_contents('http://www.google.com/ig/calculator?hl=en&q='.$inputAmount.$inputCurrency.'=?'.$outputCurrency);
    $exchange = explode('"', $exchange);
    $exchange = explode('.', $exchange['3']);
    $exchange[0] = str_replace(" ", "",preg_replace('/\D/', '',  $exchange[0]));
    if(isset($exchange[1])){
        $exchange[1] = str_replace(" ", "",preg_replace('/\D/', '', $exchange[1]));
        $exchange = $exchange[0].".".$exchange[1];        
    } else{
        $exchange = $exchange[0];
    }
    return $exchange;
}

因此​​,用户能得到从输入货币汇率,如对钱的具体数额USD和输出货币,如EUR。正如我所说的,这是顺顺当当的工作,直到昨晚。

So the user was able to get the exchange rate from an input currency such as "USD" and an output currency such as "EUR" on a specific amount of money. As I said, this was working swimmingly up until yesterday night.

任何想法?

推荐答案

没关系!解决它!

对于任何有兴趣,这里就是我做,让我的code的工作(用最少的chnges可能)与雅虎YQL:

// ** GET EXCHANGE INFO FROM YAHOO YQL ** //
$url = 'http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.xchange where pair in ("USDEUR", "EURUSD")&env=store://datatables.org/alltableswithkeys'; //<-- Get the YQL info from Yahoo (here I'm only interested in converting from USD to EUR and vice-versa; you should add all conversion pairs you need).
$xml = simplexml_load_file($url) or die("Exchange feed not loading!"); //<-- Load the XML file into PHP variable.
$exchange = array(); //<-- Build an array to hold the data we need.
for($i=0; $i<2; $i++): //<-- For loop to get data specific to each exchange pair (you should change 2 to the actual amount of pairs you're querying for).
    $name = (string)$xml->results->rate[$i]->Name; //<-- Get the name of the pair and turn it into a string (this looks like this: "USD to EUR").
    $rate = (string)$xml->results->rate[$i]->Rate; //<-- Do the same for the actual rate resulting from the conversion.
    $exchange[$name] = $rate; //<-- Put the data pairs into the array.
endfor; //<-- End for loop. :)
// ** WORK WITH EXCHANGE INFO ** //
$toeur = array( //<-- Create new array specific for conversion to one of the units needed.
         'usd' => $exchange['USD to EUR'], //<-- Create an array key for each unit used. In this case, in order to get the conversion of USD to EUR I ask for it from my $exchange array with the pair Name.
         'eur' => 1); //<-- The way I coded the app, I found it more practical to also create a conversion for the unit into itself and simply use a 1, which translates into "do not convert"
$tousd = array(
         'eur' => $exchange['EUR to USD'],
         'usd' => 1);

这基本上是所有你需要得到你想要的所有交换信息。在这之后,你用这一切是这样的:

This is basically all you need to get all the exchange info you want. After that, you use it all something like this:

amount*$toxxx['coin'];

所以,说我想知道欧元是多少100美元现在:

So, say I wanted to know how many Euro is 100 USD right now:

100*$toeur['usd'];

小意思!

这篇关于从Yahooapis获得的货币转换数据,现在的iGoogle是走了的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆