具體實現代碼如下:
復制代碼 代碼如下:
<?php
/*
* File: CurrencyConverter.php
* Author: Simon Jarvis
* Copyright: 2005 Simon Jarvis
* Date: 10/12/05
* Link: http://www.white-hat-web-design.co.uk/articles/php-currency-conversion.php
*
* 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:
* http://www.gnu.org/licenses/gpl.html
*
*/
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 = "{<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_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英鎊轉換成美元(美元)。
復制代碼 代碼如下:
<?php
include('CurrencyConverter.php');
$x = new CurrencyConverter('your_host','your_username','your_password','your_database_name','your_table_name');
echo $x->convert(2.50,'GBP','USD');
?>
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注本站行業資訊頻道,感謝您對本站的支持。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
兩融標的是什么意思?兩融標的指中國A股金融市場中可以通過證券公司開展融資融券業務的上市公司。投資者操作這類標的需要到證券公司申開戶,開通后的帳戶叫融資融券帳戶(也稱為信用證券帳戶),申請投資者只要符合要求均可以辦理該業務,同時各個證券公司融資融劵標的不同。上市公司如何成為兩融標的股?1、在滬深交易所上市滿三個月(創業板科創板除外)。2、上市公司股東人數不得少于4000人。3、股票發行公司已完成股權...
封轉開基金的含義是什么?封轉開基金的模式有哪些?小編整理了以下相關內容,一起來看看吧!封轉開基金指的是封閉式投資基金在符合一定的條件下,可以轉換成為開放式投資基金。目前,基金封轉開的模式包含有直接轉、合并轉以及漸進轉,主要是通過這三種方式轉為交易所交易基金或上市型開放式基金。封轉開作用是消除了封閉式基金到期的不確定性,成功的封轉開可以使持有人避免因到期清盤而遭受損失,維護市場穩定。封轉開基金的模式...
鹽業銀行成立于什么時間?鹽業銀行成立于1915年3月,總管理處設干北京。1913年梁士詒代理財政總長時,曾向當時國務院建議設立鹽務實業銀行。鹽業銀行成立時,由袁世凱的表弟張鎮芳任經理。清末時張曾任鹽運使,民國初曾任河南督軍、總統府顧問。原由鹽務署撥給官款,實行官商合辦,經收全部鹽稅收入;并“得代理國庫金的一部分”。第二年袁世凱病死,鹽務署不撥官款,改為商辦,成立時實收資本 ...