php環境下で、二つの為替インターフェースはすでにテストに合格しました。
3263 ワード
方法1:中国銀行バージョン、シンプルで乱暴
// ,
// 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","
","\t"), "", $data);
//
preg_match('/[\s]* [\s]*[\s|\S]*[\s]*/',$data, $converted);
// ,
$data = str_replace("", ";", $converted[0]);
$data = str_replace(array("",""), "", $data);
$data = str_replace("", ",", $data);
$data = str_replace(array("",""), "", $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;
}
方法2:集約データバージョンは不安定ですが、利用できます。主に訪問回数制限があります。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;
}