php實(shí)現(xiàn)國(guó)際匯率兌換接口
來源:昆明多彩網(wǎng)絡(luò)公司 日期:2011-04-10 閱讀: 發(fā)表評(píng)論
首先介紹一個(gè)網(wǎng)站:http://xurrency.com/,該網(wǎng)站是目前大家用的最多的匯率換算網(wǎng)站,查詢出來的結(jié)果權(quán)威準(zhǔn)確無誤。
它們有提供匯率換算api,地址是http://xurrency.com/api,只需要將該網(wǎng)址改成類似這樣的:http://xurrency.com/api/usd/cny/1即可得到匯率轉(zhuǎn)換后的結(jié)果。返回結(jié)果如:{"result":{"updated_at":"2011-04-08T19:10:00Z","value":6.5363,"target":"cny","base":"usd"},"code":0,"status":"ok"},是json格式,可以給php和js共用。但是該api的免費(fèi)版本有一個(gè)限制,就是一個(gè)ip單日之內(nèi)只能查詢10次,超出10次就需要購買商業(yè)授權(quán)才行,授權(quán)的key寫在網(wǎng)址后面即可,對(duì)于一個(gè)商業(yè)網(wǎng)站來說一天查詢10次肯定不行的,所以此路不通。
http://xurrency.com/在自身網(wǎng)站上提供了免費(fèi)查詢的功能,但是查詢結(jié)果并不是api的形式,所以我們需要加工一下才能提供給我們自己的網(wǎng)站使用。主要使用了php中的file_get_contents函數(shù)和正則過濾功能。
<?php
$Amount = $_GET['Amount'];
$to = $_GET['to'];
$url = "http://www.xe.com/ucc/convert.cgi?Amount=$Amount&From=CNY&To=$to";
$content = file_get_contents($url);
$regex = "/class=\"rate\" >(.+?) ".$to."/i"; //正則表達(dá)式.
if(preg_match_all($regex, $content, $matches)) {
echo $Amount.' CNY = '.$matches[1][0].' '.$to;
}
?>
Amount為金額數(shù)量,to為目標(biāo)貨幣的代號(hào),F(xiàn)rom=CNY中的CNY為人民幣的代號(hào),這里是直接寫死在了網(wǎng)址后面的參數(shù)上。通過正則將查詢出來的結(jié)果過濾到我們想要的結(jié)果,然后呈現(xiàn)出來。目標(biāo)達(dá)到。
在網(wǎng)站制作的時(shí)候php的file_get_contents函數(shù)和正則功能可以將幾乎所有網(wǎng)站的結(jié)果處理成我們想要的效果,弊端是需要考慮到另外一個(gè)網(wǎng)站的網(wǎng)速,同時(shí)如果服務(wù)器總是頻繁讀取另外一個(gè)網(wǎng)站數(shù)據(jù)的話可能會(huì)導(dǎo)致服務(wù)器ip被封,在沒有必要的時(shí)候,可以采用數(shù)據(jù)庫或者cookie結(jié)合來做,盡量減少讀取外部網(wǎng)站的頻率。
發(fā)表評(píng)論評(píng)論列表(有 條評(píng)論)