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程序设计有所帮助。