Vietcombank cung cấp file XML chứa thông tin tỷ giá nhờ đó mà chúng ta có thể nhúng vào website sử dụng mã đọc XML.
Lấy thông tin tỷ giá của VCB
Truy cập vào địa chỉ: http://vietcombank.com.vn/ExchangeRates/ExrateXML.aspx.
Đây là đường dẫn file xml chứa thông tin tỷ giá ngoại tệ của vietcombank.com.vn.
Công việc còn lại của chúng ta là sử lý dữ liệu file XML và hiển thị ra ngoài. Có nhiều cách đọc XML bằng PHP, cách sau đây bạn có thể tham khảo:
Đây là đường dẫn file xml chứa thông tin tỷ giá ngoại tệ của vietcombank.com.vn.
Công việc còn lại của chúng ta là sử lý dữ liệu file XML và hiển thị ra ngoài. Có nhiều cách đọc XML bằng PHP, cách sau đây bạn có thể tham khảo:
Tải nội dung file http://vietcombank.com.vn/ExchangeRates/ExrateXML.aspx và lưu vào file trên hosting, phòng trường hợp không kết nối được vào địa chỉ này thì sẽ lấy nội dung của file XML mới nhất.
$Link = $Link2 = ''; $dir='cache/'; if(!is_dir($dir)) mkdir($dir,0755,true); $Link = $dir.'ExchangeRates.xml'; $Link2 = 'http://vietcombank.com.vn/ExchangeRates/ExrateXML.aspx'; $content = @file_get_contents($Link2); if($content==''){ $content = @file_get_contents($Link); }else{ copy($Link2,$Link); }
Các bạn có thể đọc XML sử dụng XML parser trong PHP hoặc đơn giản hơn chúng ta sử dụng regular expression. Vì cấu trúc nội dung của file xml ExchangeRates cũng đơn giản. Sau đó Lưu thông tin lấy được vào mảng 2 chiều như sau.
if($content!='' and preg_match_all('/Exrate CurrencyCode="(.*)" CurrencyName="(.*)" Buy="(.*)" Transfer="(.*)" Sell="(.*)"/',$content,$matches) and count($matches)>0){ $exchange_rates=array( 'USD'=>array() ,'EUR'=>array() ,'GBP'=>array() ,'HKD'=>array() ,'JPY'=>array() ,'CHF'=>array() ,'AUD'=>array() ,'CAD'=>array() ,'SGD'=>array() ,'THB'=>array() ); foreach($matches[1] as $key=>$value){ if(isset($exchange_rates[$value])){ $exchange_rates[$value]=array( 'id'=>$value ,'name'=>$matches[2][$key] ,'buy'=>$matches[3][$key] ,'transfer'=>$matches[4][$key] ,'sell'=>$matches[5][$key] ); } } }
Cuối cùng đưa tất cả đoạn code lấy tỷ giá ở trên vào hàm.
function getExchangeRatesVCB(){ $Link = $Link2 = ''; $dir='cache/'; if(!is_dir($dir)) mkdir($dir,0755,true); $Link = $dir.'ExchangeRates.xml'; $Link2 = 'http://vietcombank.com.vn/ExchangeRates/ExrateXML.aspx'; $content = @file_get_contents($Link2); if($content==''){ $content = @file_get_contents($Link); }else{ copy($Link2,$Link); } if($content!='' and preg_match_all('/Exrate CurrencyCode="(.*)" CurrencyName="(.*)" Buy="(.*)" Transfer="(.*)" Sell="(.*)"/',$content,$matches) and count($matches)>0){ $exchange_rates=array( 'USD'=>array() ,'EUR'=>array() ,'GBP'=>array() ,'HKD'=>array() ,'JPY'=>array() ,'CHF'=>array() ,'AUD'=>array() ,'CAD'=>array() ,'SGD'=>array() ,'THB'=>array() ); foreach($matches[1] as $key=>$value){ if(isset($exchange_rates[$value])){ $exchange_rates[$value]=array( 'id'=>$value ,'name'=>$matches[2][$key] ,'buy'=>$matches[3][$key] ,'transfer'=>$matches[4][$key] ,'sell'=>$matches[5][$key] ); } } Return $exchange_rates; } }
Sử dụng
In thông tin tỷ giá của VCB ra bảng.
In thông tin tỷ giá của VCB ra bảng.
<?php $data=getExchangeRatesVCB(); ?> <table border="1"> <tr> <td>Mã NT</td> <td>Tên ngoại tệ</td> <td>Mua tiền mặt</td> <td>Mua chuyển khoản</td> <td>Bán</td> </tr> <?php foreach($data as $id=>$item){ ?> <tr> <td><?php echo $id?></td> <td><?php echo $item['name']?></td> <td><?php echo $item['buy']?></td> <td><?php echo $item['transfer']?></td> <td><?php echo $item['sell']?></td> </tr> <?php } ?> </table>
LẤY GIÁ VÀNG TỪ SJC.COM.VN
Tỷ giá vàng, cung cấp tại địa chỉ XML: http://www.sjc.com.vn/xml/tygiavang.xml.
Đây là đường dẫn file xml chứa thông tin giá vàng của sjc.com.vn. Cũng giống như cách lấy thông tin tỷ giá ở phần trước. Ở đây mình sử dụng hàm
simplexml_load_string
đọc cấu trúc giá vàng từ sjc.com.vn sẽ dễ hơn.function tygiavang(){ $Link = $Link2 = ''; $dir='cache/'; if(!is_dir($dir)) mkdir($dir,0755,true); $Link = $dir.'tygiavang.xml'; $Link2 = 'http://www.sjc.com.vn/xml/tygiavang.xml'; $content = @file_get_contents($Link2); if($content==''){ $content = @file_get_contents($Link); }else{ copy($Link2,$Link); } $xml=simplexml_load_string($content); return $xml; }
In thông tin giá vàng ra thẻ table.
<?php $data=tygiavang(); ?> <table border="1"> <tr bgcolor="yellow"> <td>Thành phố</td> <td>Type</td> <td>Sell</td> <td>Buy</td> </tr> <?php foreach($data->ratelist->city as $item){ ?> <tr> <td <?php if(count($item->item)>1){?>rowspan="<?php echo count($item->item)+1?>" <?php }?>><?php echo (string)$item['name']?></td> <?php $first=reset($item->item); next($item); ?> <td><?php echo (string)$first['type']?></td> <td><?php echo (string)$first['sell']?></td> <td><?php echo (string)$first['buy']?></td> </tr> <?php if(count($item->item)>1){ foreach($item->item as $t){ ?> <tr> <td><?php echo (string)$t['type']?></td> <td><?php echo (string)$t['sell']?></td> <td><?php echo (string)$t['buy']?></td> </tr> <?php } } ?> <?php } ?> </table>
Nhận xét
Đăng nhận xét