用户名: 用QQ登录本站
密 码: 注册
验证码:
首页 软件 编程 笑话 知识 公告 日历 计算器 行情 简化版
文明驾车我带头,文明行路我带头,礼貌让座我带头      

[公益] 节省一分零钱 献出一份爱心 温暖世间真情       【腾讯云】云产品限时秒杀,爆款1核2G云服务器,首年99元      
广告位招租中
2021年 儿童节 23
2021年 端午节 36
2022年 元 旦 237
2022年 春 节 268
 
  • 您现在的位置:首页 >> 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-......

      具体实现代码如下:


    <?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');

    ?>

      版权声明:本内容来源于互联网,如有侵犯您的版权,请联系站长,本站收到您的信息后将及时处理。


    发布日期:2021/5/1 发布时间:16:10:07 点击:108 录入:齐天大圣
  • 上一篇:PHP实现的简单日历类
  • 下一篇:linux实现php定时执行cron任务详解
  • 本类新增
    本类热门文章
    Baidu

    YiJiaCMS V5.1 Build 21.05.08(MSSQL) 闽ICP备05000814号-1
    本空间由景安网络提供,百度云加速提供加速防护
    齐天大圣® 制 作 ©2000-2021
    您正在使用IPV4(3.230.154.160)访问本站 您本次共访问本站 1 次