Getting currency conversion data from Yahooapis now that iGoogle is gone

前端 未结 3 1662
孤街浪徒
孤街浪徒 2021-01-24 16:19

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

Through PHP, using the following little line

file_get_conten         


        
3条回答
  •  说谎
    说谎 (楼主)
    2021-01-24 16:56

    Never mind! Solved it!

    For anyone interested, here's what I did to get my code to work (with the least chnges possible) with the Yahoo 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'];
    

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

    100*$toeur['usd'];
    

    Piece of cake!

提交回复
热议问题