调用新浪短链api,长链接可转为http://t.cn/RX7mLZh这种t.cn短链,同时可转回原链接!
//新浪的App_Key
const SINAAPPKEY = '291**161014';
public function ShortUrl($url)
{
$url="https://developer.piwik.org/guides/tracking-javascript-guide";
// $url = $this->filterUrl($url);(未用)
$url=urlencode($url);
//获得短链
$short_url = $this->SinaShortUrl($url);
//短链转原链接
$long_url = $this->SinaLongUrl($short_url);
}
function CurlQuery($url) {
//设置附加HTTP头
$addHead = array(
"Content-type: application/json"
);
$curl_obj = curl_init();
curl_setopt($curl_obj, CURLOPT_URL, $url);
curl_setopt($curl_obj, CURLOPT_HTTPHEADER, $addHead);
curl_setopt($curl_obj, CURLOPT_HEADER, 0);
curl_setopt($curl_obj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_obj, CURLOPT_TIMEOUT, 15);
$result = curl_exec($curl_obj);
curl_close($curl_obj);
return $result;
}
//sina对于没有协议(http://)开头的和不规范的地址会返回错误
function filterUrl($url='') {
$url = trim(strtolower($url));
$url = trim(preg_replace('/^http:\//', '', $url));
if ($url == ''){
return false;
}else{
return urlencode('http://' . $url);
}
}
//根据长网址获取短网址
function SinaShortUrl($long_url) {
$url = 'http://api.t.sina.com.cn/short_url/shorten.json?source=' . self::SINAAPPKEY . '&url_long=' . $long_url;
//获取请求结果
$result = $this->CurlQuery($url);
$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;
}
}
//根据短网址获取长网址
function SinaLongUrl($short_url) {
$url = 'http://api.t.sina.com.cn/short_url/expand.json?source=' . self::SINAAPPKEY . '&url_short=' . $short_url;
$result = $this->CurlQuery($url);
$json = json_decode($result);
if (isset($json->error) || !isset($json[0]->url_long) || $json[0]->url_long == ''){
return false;
}else{
return $json[0]->url_long;
}
}