使用PHP进行货币转换

Cli*_*ote 17 php api currency

我正在寻找一种方法,可以在网站上将任何金额从一种货币转换为另一种货币.用户输入类似"100"的内容并选择USD作为货币,然后选择澳元或加元作为转换的货币.当他点击"转换"按钮时,我想通过某些API自动转换该金额,并向他显示他选择转换为的货币金额.

有任何想法吗?

小智 8

此方法使用Yahoo货币API完整教程:PHP,Python,Javascript和jQuery中的货币转换器

function currencyConverter($currency_from, $currency_to, $currency_input) {
    $yql_base_url = "http://query.yahooapis.com/v1/public/yql";
    $yql_query = 'select * from yahoo.finance.xchange where pair in ("' . $currency_from . $currency_to . '")';
    $yql_query_url = $yql_base_url . "?q=" . urlencode($yql_query);
    $yql_query_url .= "&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys";
    $yql_session = curl_init($yql_query_url);
    curl_setopt($yql_session, CURLOPT_RETURNTRANSFER, true);
    $yqlexec = curl_exec($yql_session);
    $yql_json =  json_decode($yqlexec, true);
    $currency_output = (float) $currency_input * $yql_json['query']['results']['rate']['Rate'];

    return $currency_output;
}

$currency_input = 2;
//currency codes : http://en.wikipedia.org/wiki/ISO_4217
$currency_from = "USD";
$currency_to = "INR";
$currency = currencyConverter($currency_from, $currency_to, $currency_input);

echo $currency_input . ' ' . $currency_from . ' = ' . $currency . ' ' . $currency_to;
Run Code Online (Sandbox Code Playgroud)


小智 7

找了很多,找到了这个。

// Fetching JSON
$req_url = 'https://api.exchangerate-api.com/v4/latest/USD';
$response_json = file_get_contents($req_url);

// Continuing if we got a result
if(false !== $response_json) {

    // Try/catch for json_decode operation
    try {

    // Decoding
    $response_object = json_decode($response_json);

    // YOUR APPLICATION CODE HERE, e.g.
    $base_price = 12; // Your price in USD
    $EUR_price = round(($base_price * $response_object->rates->EUR), 2);

    }
    catch(Exception $e) {
        // Handle JSON parse error...
    }
}
Run Code Online (Sandbox Code Playgroud)

这工作正常。片段来自:https : //www.exchangerate-api.com/docs/php-currency-api


TGu*_*ond 6

将欧元兑换成美元的一个例子

$url = 'http://www.webservicex.net/CurrencyConvertor.asmx/ConversionRate?FromCurrency=EUR&ToCurrency=USD';
            $xml = simpleXML_load_file($url,"SimpleXMLElement",LIBXML_NOCDATA);
            if($xml ===  FALSE)
            {
               //deal with error
            }
            else { 

                $rate = $xml;
            }
Run Code Online (Sandbox Code Playgroud)

  • 404 Not Found - 此服务不再可用。 (2认同)

小智 2

我喜欢第一个解决方案,但它似乎存在很大的问题。我试图将它实现到支付网关中,但我一直得到1的结果。这让我很困惑,我最终发现这是因为谷歌为数千个sparator使用了一个空间。因此,由于其余部分已被分解,因此 1 500.00 的金额作为 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/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']);
  $data[0] = str_replace(" ", "",preg_replace('/\D/', '',  $data[0]));
  if(isset($data[1])){
    $data[1] = str_replace(" ", "",preg_replace('/\D/', '', $data[1]));
    $var = $data[0].".".$data[1];        
  } else{
    $var = $data[0];
  }
  return round($var,2); }
Run Code Online (Sandbox Code Playgroud)

  • iGoogle 已于 2013 年 11 月 1 日停用。此 API 不再有效。 (2认同)