Heim > php教程 > php手册 > PHP实现货币换算的方法

PHP实现货币换算的方法

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-06 20:16:32
Original
3097 Leute haben es durchsucht

这篇文章主要介绍了PHP实现货币换算的方法,以实例形式较为详细的讲述了货币转换的实现方法,并举英镑转换美元为例讲述具体用法,需要的朋友可以参考下

本文实例讲述了PHP实现货币换算的方法。分享给大家供大家参考。

具体实现代码如下:

复制代码 代码如下:

/*
* File: CurrencyConverter.php
* Author: Simon Jarvis
* Copyright: 2005 Simon Jarvis
* Date: 10/12/05
* Link:
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details:
*
*
*/
class CurrencyConverter {
   var $xml_file = "www.ecb.int/stats/eurofxref/eurofxref-daily.xml";
   var $mysql_host, $mysql_user, $mysql_pass, $mysql_db, $mysql_table;
   var $exchange_rates = array();
   //Load Currency Rates
   function CurrencyConverter($host,$user,$pass,$db,$tb) {
      $this->mysql_host = $host;
      $this->mysql_user = $user;
      $this->mysql_pass = $pass;
      $this->mysql_db = $db;
      $this->mysql_table = $tb;
      $this->checkLastUpdated();
      $conn = mysql_connect($this->mysql_host,$this->mysql_user,$this->mysql_pass);
      $rs = mysql_select_db($this->mysql_db,$conn);
      $sql = "SELECT * FROM ".$this->mysql_table;
      $rs =  mysql_query($sql,$conn);
      while($row = mysql_fetch_array($rs)) {
         $this->exchange_rates[$row['currency']] = $row['rate'];
      }
   }
   /* Perform the actual conversion, defaults to £1.00 GBP to USD */
   function convert($amount=1,$from="GBP",$to="USD",$decimals=2) {
      return(number_format(($amount/$this->exchange_rates[$from])*$this->exchange_rates[$to],$decimals));
   }
   /* Check to see how long since the data was last updated */
   function checkLastUpdated() {
      $conn = mysql_connect($this->mysql_host,$this->mysql_user,$this->mysql_pass);
      $rs = mysql_select_db($this->mysql_db,$conn);
      $sql = "SHOW TABLE STATUS FROM ".$this->mysql_db." LIKE '".$this->mysql_table."'";
      $rs =  mysql_query($sql,$conn);
      if(mysql_num_rows($rs) == 0 ) {
         $this->createTable();
      } else {
         $row = mysql_fetch_array($rs);
         if(time() > (strtotime($row["Update_time"])+(12*60*60)) ) {
            $this->downloadExchangeRates();
         }
      }
   }
   /* Download xml file, extract exchange rates and store values in database */
   function downloadExchangeRates() {
      $currency_domain = substr($this->xml_file,0,strpos($this->xml_file,"/"));
      $currency_file = substr($this->xml_file,strpos($this->xml_file,"/"));
      $fp = @fsockopen($currency_domain, 80, $errno, $errstr, 10);
      if($fp) {
         $out = "GET ".$currency_file." HTTP/1.1rn";
         $out .= "Host: ".$currency_domain."rn";
         $out .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5rn";
         $out .= "Connection: Closernrn";
         fwrite($fp, $out);
         while (!feof($fp)) {
            $buffer .= fgets($fp, 128);
         }
         fclose($fp);
         $pattern = "{}is";
         preg_match_all($pattern,$buffer,$xml_rates);
         array_shift($xml_rates);
         for($i=0;$i             $exchange_rate[$xml_rates[0][$i]] = $xml_rates[1][$i];
         }
         $conn = mysql_connect($this->mysql_host,$this->mysql_user,$this->mysql_pass);
         $rs = mysql_select_db($this->mysql_db,$conn);
         foreach($exchange_rate as $currency=>$rate) {
            if((is_numeric($rate)) && ($rate != 0)) {
               $sql = "SELECT * FROM ".$this->mysql_table." WHERE currency='".$currency."'";
               $rs =  mysql_query($sql,$conn) or die(mysql_error());
               if(mysql_num_rows($rs) > 0) {
                  $sql = "UPDATE ".$this->mysql_table." SET rate=".$rate." WHERE currency='".$currency."'";
               } else {
                  $sql = "INSERT INTO ".$this->mysql_table." VALUES('".$currency."',".$rate.")";
               }
               $rs =  mysql_query($sql,$conn) or die(mysql_error());
            }
         }
      }
   }
   /* Create the currency exchange table */
   function createTable() {
      $conn = mysql_connect($this->mysql_host,$this->mysql_user,$this->mysql_pass);
      $rs = mysql_select_db($this->mysql_db,$conn);
      $sql = "CREATE TABLE ".$this->mysql_table." ( currency char(3) NOT NULL default '', rate float NOT NULL default '0', PRIMARY KEY(currency) ) ENGINE=MyISAM";
      $rs =  mysql_query($sql,$conn) or die(mysql_error());
      $sql = "INSERT INTO ".$this->mysql_table." VALUES('EUR',1)";
      $rs =  mysql_query($sql,$conn) or die(mysql_error());
      $this->downloadExchangeRates();
   }
}
?>


上面的代码复制到一个新文件并将其保存为CurrencyConverter.php。当你需要转换包含类文件,称为“转换”功能。你需要输入自己的mysql数据库变量如登录详细信息。下面的例子将£2.50英镑转换成美元(美元)。

复制代码 代码如下:

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Aktuelle Ausgaben
PHP-Datenerfassung?
Aus 1970-01-01 08:00:00
0
0
0
PHP-Erweiterung intl
Aus 1970-01-01 08:00:00
0
0
0
Wie man PHP gut lernt
Aus 1970-01-01 08:00:00
0
0
0
Mehrere PHP-Versionen
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage