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."&nothing=".$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;
}