本文实例讲述了PHP实现货币换算的方法。分享给大家供大家参考。
具体实现代码如下:
代码如下:
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,$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,strpos($this->xml_file,"/"));
$currency_file = substr($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;$iMysqL_host,$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,$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英镑转换成美元(美元)。
代码如下:
convert(2.50,'GBP','USD');
?>
希望本文所述对大家的PHP程序设计有所帮助。