方法一:中国银行版本,简单粗暴
//中国银行汇率接口,简单粗暴
//参数pjname:1316美元1326欧元1314英镑
public function getExchangeRate()
{
$date = date("Y-m-d", time());
//获得页面代码
$data = file_get_contents("http://srh.bankofchina.com/search/whpj/search.jsp?erectDate=".$date."¬hing=".$date."&pjname=1316&page=1");
//去掉非字符
$data = str_replace(array(" ","\r","\n","\t"), "", $data);
//得到汇率代码
preg_match('/<tr>[\s]*<td>美元<\/td>[\s]*<td>[\s|\S]*<\/td>[\s]*<\/tr>/',$data, $converted);
//开始各种调整格式,为了整理为数组
$data = str_replace("</tr><tr>", ";", $converted[0]);
$data = str_replace(array("<tr>","</tr>"), "", $data);
$data = str_replace("</td><td>", ",", $data);
$data = str_replace(array("<td>","</td>"), "", $data);
$rateList = explode(";", $data);
$rate = explode(",", $rateList[0]);
//$rate [0] 国家 [1] 现汇买入价 [2]现钞买入价[3]现汇卖出价[4]现钞卖出价[5]外管局中间价[6]中行折算价
$rate = $rate[3];
$rate = round(($rate/100),2);
if(is_numeric($rate))return $rate;
else return false;
}
方法二:聚合数据版本,不稳定,但是可用。主要是有访问次数限制。
public function exchangeRate(){
$key="390*****************************";//32位密钥需要申请
$url = "http://op.juhe.cn/onebox/exchange/currency";
$params = array(
"from" =>"USD", //转换汇率前的货币代码
"to" => "CNY", //转换汇率成的货币代码
"key" => $key, //应用APPKEY(应用详细页查询)
);
$paramstring = http_build_query($params);
$content =$this-> juhecurl($url,$paramstring);
$result = json_decode($content,true);
if($result){
if($result['error_code']=='0'){
$rate = $result['result']['0']['result'];
param::set_cookie('rate',$rate,86400+SYS_TIME);
}else{
$rate = 6.70;
param::set_cookie('rate',$rate,86400+SYS_TIME);
}
}else{
$rate = 6.70;
param::set_cookie('rate',$rate,86400+SYS_TIME);
}
return $rate;
}
public function juhecurl($url,$params=false,$ispost=0){
$httpInfo = array();
$ch = curl_init();
curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );
curl_setopt( $ch, CURLOPT_USERAGENT , 'JuheData' );
curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 60 );
curl_setopt( $ch, CURLOPT_TIMEOUT , 60);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true );
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
if( $ispost )
{
curl_setopt( $ch , CURLOPT_POST , true );
curl_setopt( $ch , CURLOPT_POSTFIELDS , $params );
curl_setopt( $ch , CURLOPT_URL , $url );
}else{
if($params){
curl_setopt( $ch , CURLOPT_URL , $url.'?'.$params );
}else{
curl_setopt( $ch , CURLOPT_URL , $url);
}
}
$response = curl_exec( $ch );
if ($response === FALSE) {
//echo "cURL Error: " . curl_error($ch);
return false;
}
$httpCode = curl_getinfo( $ch , CURLINFO_HTTP_CODE );
$httpInfo = array_merge( $httpInfo , curl_getinfo( $ch ) );
curl_close( $ch );
return $response;
}