php环境下,两种汇率接口,已经测试通过

方法一:中国银行版本,简单粗暴

//中国银行汇率接口,简单粗暴
//参数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","\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;
}

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜爱cpp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值