PHP实现货币换算的方法
本文实例讲述了PHP实现货币换算的方法。分享给大家供大家参考。
具体实现代码如下:
<?php /* *File:CurrencyConverter.php *Author:SimonJarvis *Copyright:2005SimonJarvis *Date:10/12/05 *Link:http://www.white-hat-web-design.co.uk/articles/php-currency-conversion.php * *Thisprogramisfreesoftware;youcanredistributeitand/or *modifyitunderthetermsoftheGNUGeneralPublicLicense *aspublishedbytheFreeSoftwareFoundation;eitherversion2 *oftheLicense,or(atyouroption)anylaterversion. * *Thisprogramisdistributedinthehopethatitwillbeuseful, *butWITHOUTANYWARRANTY;withouteventheimpliedwarrantyof *MERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.Seethe *GNUGeneralPublicLicenseformoredetails: *http://www.gnu.org/licenses/gpl.html * */ classCurrencyConverter{ 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(); //LoadCurrencyRates functionCurrencyConverter($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']; } } /*Performtheactualconversion,defaultsto£1.00GBPtoUSD*/ functionconvert($amount=1,$from="GBP",$to="USD",$decimals=2){ return(number_format(($amount/$this->exchange_rates[$from])*$this->exchange_rates[$to],$decimals)); } /*Checktoseehowlongsincethedatawaslastupdated*/ functioncheckLastUpdated(){ $conn=mysql_connect($this->mysql_host,$this->mysql_user,$this->mysql_pass); $rs=mysql_select_db($this->mysql_db,$conn); $sql="SHOWTABLESTATUSFROM".$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(); } } } /*Downloadxmlfile,extractexchangeratesandstorevaluesindatabase*/ functiondownloadExchangeRates(){ $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;WindowsNT5.1;en-US;rv:1.8)Gecko/20051111Firefox/1.5rn"; $out.="Connection:Closernrn"; fwrite($fp,$out); while(!feof($fp)){ $buffer.=fgets($fp,128); } fclose($fp); $pattern="{<Cubes*currency='(w*)'s*rate='([d.]*)'/>}is"; preg_match_all($pattern,$buffer,$xml_rates); array_shift($xml_rates); for($i=0;$i<count($xml_rates[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_rateas$currency=>$rate){ if((is_numeric($rate))&&($rate!=0)){ $sql="SELECT*FROM".$this->mysql_table."WHEREcurrency='".$currency."'"; $rs= mysql_query($sql,$conn)ordie(mysql_error()); if(mysql_num_rows($rs)>0){ $sql="UPDATE".$this->mysql_table."SETrate=".$rate."WHEREcurrency='".$currency."'"; }else{ $sql="INSERTINTO".$this->mysql_table."VALUES('".$currency."',".$rate.")"; } $rs= mysql_query($sql,$conn)ordie(mysql_error()); } } } } /*Createthecurrencyexchangetable*/ functioncreateTable(){ $conn=mysql_connect($this->mysql_host,$this->mysql_user,$this->mysql_pass); $rs=mysql_select_db($this->mysql_db,$conn); $sql="CREATETABLE".$this->mysql_table."(currencychar(3)NOTNULLdefault'',ratefloatNOTNULLdefault'0',PRIMARYKEY(currency))ENGINE=MyISAM"; $rs= mysql_query($sql,$conn)ordie(mysql_error()); $sql="INSERTINTO".$this->mysql_table."VALUES('EUR',1)"; $rs= mysql_query($sql,$conn)ordie(mysql_error()); $this->downloadExchangeRates(); } } ?>
上面的代码复制到一个新文件并将其保存为CurrencyConverter.php。当你需要转换包含类文件,称为“转换”功能。你需要输入自己的mysql数据库变量如登录详细信息。下面的例子将£2.50英镑转换成美元(美元)。
<?php include('CurrencyConverter.php'); $x=newCurrencyConverter('your_host','your_username','your_password','your_database_name','your_table_name'); echo$x->convert(2.50,'GBP','USD'); ?>
希望本文所述对大家的php程序设计有所帮助。