我想在PHP中将货币从INR转换为USD,这是我迄今为止尝试过的代码。但它不起作用。我错过了什么?
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);

答案 0 :(得分:2)
谷歌将网址改为
https://www.google.com/finance/converter?a
所以我找到的修复方法如下。
$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]);
原始来源:Google currency converter API - will it shut down with iGoogle?
答案 1 :(得分:1)
Google已更改货币转换器API
所以你可以使用:
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);
答案 2 :(得分: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.
}
?>
答案 3 :(得分:-1)
尽管上面的两个答案都是正确的,但它们使用的是爆炸而不是相对较慢的正则表达式。
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);
尝试使用此代码,让我们知道哪一个更快,以便其他用户可以受益。
干杯