4

I want to convert currency from INR to USD in php, here is my code I've tried so far. But its not working. What am i missing?

function currency($from_Currency,$to_Currency,$amount) {
 $amount = urlencode($amount);
 $from_Currency = urlencode($from_Currency);
 $to_Currency = urlencode($to_Currency);
 $url = "http://www.google.com/ig/calculator?hl=en&q=$amount$from_Currency=?$to_Currency";
 $ch = curl_init();
 $timeout = 0;
 curl_setopt ($ch, CURLOPT_URL, $url);
 curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch,  CURLOPT_USERAGENT , "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
 curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
 $rawdata = curl_exec($ch);
 curl_close($ch);
 $data = explode('"', $rawdata);
 $data = explode('"', $data['3']);
 $var = $data[0];
 return round($var,3);
}

$amount=130;

$from='INR';

$to='USD';

echo currency($from,$to,$amount);
  • what do you mean by `anything is missing`? is not working or what? do you have any error thrown? – Mihai Matei Dec 14 '15 at 09:21
  • I am getting Notice: Undefined offset: 3 –  Dec 14 '15 at 09:22
  • `http://www.google.com/ig/calculator?hl=en&q=30INR=?USD` it's a dead link.. it seems it cannot be accessed anymore.. – Mihai Matei Dec 14 '15 at 09:23
  • When I tested it out, i found that google responded with the message `The requested URL /ig/calculator?hl=en&q=130INR=?USD was not found on this server. That’s all we know. ` – Manikiran Dec 14 '15 at 09:23
  • can any one suggest me other code to do this ? –  Dec 14 '15 at 09:24
  • http://stackoverflow.com/questions/17773898/google-currency-converter-api-will-it-shut-down-with-igoogle and alternatives here http://stackoverflow.com/questions/3139879/how-do-i-get-currency-exchange-rates-via-an-api-such-as-google-finance – Alex Andrei Dec 14 '15 at 09:25

4 Answers4

2

As google changed the URL to

https://www.google.com/finance/converter?a

So the fix i found is below.

$amount = 1.00;
$from_Currency = 'USD';
$to_Currency = 'INR';
$amount = urlencode($amount);
$from_Currency = urlencode($from_Currency);
$to_Currency = urlencode($to_Currency);
$get = file_get_contents("https://www.google.com/finance/converter?a=$amount&from=$from_Currency&to=$to_Currency");
$get = explode("<span class=bld>",$get);
$get = explode("</span>",$get[1]);
echo $converted_amount = preg_replace("/[^0-9\.]/", null, $get[0]);

Original source: Google currency converter API - will it shut down with iGoogle?

Community
  • 1
  • 1
Chetan Ameta
  • 7,696
  • 3
  • 29
  • 44
1

Google have been change currency converter API

So you can get it using :

function currency($from_Currency,$to_Currency,$amount) {
  $amount = urlencode($amount);
  $from_Currency = urlencode($from_Currency);
  $to_Currency = urlencode($to_Currency);
  $get_amount = file_get_contents("https://www.google.com/finance/converter?a=$amount&from=$from_Currency&to=$to_Currency");
  $get_amount = explode("<span class=bld>",$get_amount);
  $get_amount = explode("</span>",$get_amount[1]);  
  $converted_amount = preg_replace("/[^0-9\.]/", null, $get_amount[0]);

  return $converted_amount;
}

$amount=130;

$from='INR';

$to='USD';

echo currency($from,$to,$amount);
Hardik Solanki
  • 3,153
  • 1
  • 17
  • 28
0
<?php

// change amount according to your needs
$amount =1;
// change From Currency according to your needs
$from_Curr ='USD';
// change To Currency according to your needs
$to_Curr ="BHD";
$converted_currency=currencyConverter($from_Curr, $to_Curr, $amount);
// Print outout
echo $converted_currency;


function currencyConverter($from_Currency,$to_Currency,$amount) {
    // <!-- Currency Coverter 
    // Develop By Punit Kathiriya

$from_Currency = urlencode($from_Currency);
$to_Currency = urlencode($to_Currency);
$get = file_get_contents("https://finance.google.com/finance/converter?a=1&from=$from_Currency&to=$to_Currency");
$get = explode("<span class=bld>",$get);
$get = explode("</span>",$get[1]);
$converted_currency = preg_replace("/[^0-9\.]/", null, $get[0]);
return $converted_currency;
// 14/10/2017 11:16 A.M.
}

?>
Ravi Thummar
  • 5,048
  • 1
  • 11
  • 22
-1

Although both answers above are correct, they use explode instead of regex which is slower(relatively).

function currency($from_Currency,$to_Currency,$amount) {
    $amount = urlencode($amount);
    $from_Currency = urlencode($from_Currency);
    $to_Currency = urlencode($to_Currency);
    $url = "http://www.google.com/finance/converter?a=$amount&from=$from_Currency&to=$to_Currency";
    $ch = curl_init();
    $timeout = 0;
    curl_setopt ($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch,  CURLOPT_USERAGENT , "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $rawdata = curl_exec($ch);
    curl_close($ch);
    $regularExpression  = '#\<span class=bld\>(.+?)\<\/span\>#s';
    preg_match($regularExpression, $rawdata, $finalData);
    echo $finalData[0];
}

$amount=130;

$from='INR';

$to='USD';

echo currency($from,$to,$amount);

Try this code and let us know which one works faster, so that other users can benefit.

Cheers

bIgBoY
  • 417
  • 2
  • 12