PHP货币换算程序代码
<?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' ); ?>查看更多关于PHP货币换算程序代码 - php类库的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did29563