好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PHP货币换算程序代码 - php类库

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类库的详细内容...

  阅读:36次