実用的なPHP通貨換算プログラムコードなので、困っている友達はそれを参照できます。
コードは次のとおりです | コードをコピー |
/* * ファイル: CurrencyConverter.php * 著者: サイモン・ジャービス * 著作権: 2005 Simon Jarvis * 日付: 2005/10/12 *リンク: http://www.white-hat-web-design.co.uk/articles/php-currency-conversion.php * * このプログラムはフリー ソフトウェアです。再配布したり することができます。 * GNU General Public License の条件に基づいて変更してください * Free Software Foundation によって公開されたバージョン 2 * ライセンス、または (オプションで) 以降のバージョン。 * ※このプログラムは少しでもお役に立てればと思って配信しております * ただし、いかなる保証もありません。 の暗黙の保証もありません。 * 商業性または特定の目的への適合性については、 を参照してください。 * 詳細については GNU 一般公衆利用許諾書: * http://www.gnu.org/licenses/gpl.html * */ クラス 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(); //通貨レートを読み込みます 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']; } } /* 実際の換算を実行します。デフォルトは £1.00 GBP から USD です */ 関数 Convert($amount=1,$from="GBP",$to="USD",$decimals=2) { Return(number_format(($amount/$this->exchange_rates[$from])*$this->exchange_rates[$to],$decimals)); } /* データが最後に更新されてからどれくらいの時間が経過したかを確認します */ 関数 checkLastUpdated() { $conn = mysql_connect($this->mysql_host,$this->mysql_user,$this->mysql_pass); $rs = mysql_select_db($this->mysql_db,$conn); $sql = "「.$this->mysql_db.」からのテーブルステータスを表示します。「LIKE '".$this->mysql_table."」"; $rs = mysql_query($sql,$conn); If(mysql_num_rows($rs) == 0 ) { $this->createTable(); } その他 { $row = mysql_fetch_array($rs); If(time() > (strtotime($row["Update_time"])+(12*60*60)) ) { $ this-> downloadexchangerate(); } } } /* XML ファイルをダウンロードし、為替レートを抽出し、値をデータベースに保存します */ 関数 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 .= "ホスト: ".$currency_domain."rn"; $out .= "ユーザー エージェント: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5rn"; $out .= "接続: 閉じるrnrn"; fwrite($fp, $out); while (!feof($fp)) { $buffer .= fgets($fp, 128); } fclose($fp); $pattern = "{ preg_match_all($pattern,$buffer,$xml_rates); array_shift($xml_rates); for($i=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."'"; $rs = mysql_query($sql,$conn) または die(mysql_error()); if(mysql_num_rows($rs) > 0) { $sql = "UPDATE ".$this->mysql_table." SET rate=".$rate." WHERE 通貨='".$currency."'"; } その他 { $sql = "INSERT INTO ".$this->mysql_table." VALUES('".$currency."',".$rate.")"; } $rs = mysql_query($sql,$conn) または die(mysql_error()); } } } } /* 為替テーブルを作成します */ 関数 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." (通貨 char(3) NOT NULL デフォルト ''、レート float NOT NULL デフォルト '0'、主キー(通貨) ) ENGINE=MyISAM"; $rs = mysql_query($sql,$conn) または die(mysql_error()); $sql = "INSERT INTO ".$this->mysql_table." VALUES('EUR',1)"; $rs = mysql_query($sql,$conn) または die(mysql_error()); $this->downloadExchangeRates(); } } ?> |
上記のコードを新しいファイルにコピーし、CurrencyConverter.php として保存します。変換を行う必要がある場合は、クラスファイルをインクルードして「convert」関数を呼び出すだけです。ログインの詳細など、独自の mysql データベース変数を入力する必要があります。以下の例では、£2.50 GBP を米ドル ($) に変換します。
代码如下 | 复制幣 |
include('CurrencyConverter.php'); |