针对PHP中curl_setopt的请求地址带有特殊符号的处理(短链接)
public function curlQuery() {
//请求参数
$long_url = 'http://saasmobile.x.mila66.com/interview?company_id=376&invitation_id=345';
//转换url地址(此处是坑,curl_setopt截取短链接长度)
$long_url =urlencode($long_url);
$sina_appkey = 1681459862;
$url = 'http://api.t.sina.com.cn/short_url/shorten.json?source=' . $sina_appkey . '&url_long=' . $long_url;
//设置附加HTTP头
$addHead = array(
"Content-type: application/json"
);
//初始化curl,当然,你也可以用fsockopen代替
$curl_obj = curl_init();
//设置网址
curl_setopt($curl_obj, CURLOPT_URL, $url);
//附加Head内容
curl_setopt($curl_obj, CURLOPT_HTTPHEADER, $addHead);
//是否输出返回头信息
curl_setopt($curl_obj, CURLOPT_HEADER, 0);
//将curl_exec的结果返回
curl_setopt($curl_obj, CURLOPT_RETURNTRANSFER, 1);
//设置超时时间
curl_setopt($curl_obj, CURLOPT_TIMEOUT, 15);
//执行
$result = curl_exec($curl_obj);
//关闭curl回话
curl_close($curl_obj);
//解析json
$json = json_decode($result);
//异常情况返回false
if (isset($json->error) || !isset($json[0]->url_short) || $json[0]->url_short == '')
return false;
else
return $json[0]->url_short;
}