<?php /** * URL地址長短切換,由sina新浪短鏈接API生成 * User: chenqt * Date: 2016/8/23 * Time: 18:45 */ class UrlSwitch { public function __construct() { //訪問sina的key $this->sina_appkey = '31641035'; } private function curlQuery($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); return $result; } //簡單處理下url,sina對於沒有協議(http://)開頭的和不規范的地址會返回錯誤 public function filterUrl($url = '') { $url = trim(strtolower($url)); $url = trim(preg_replace('/^http:\/\//', '', $url)); if ($url == '') return false; else return urlencode('http://' . $url); } //根據長網址獲取短網址 public function sinaShortenUrl($long_url) { //拼接請求地址,此地址你可以在官方的文檔中查看到 $url = 'http://api.t.sina.com.cn/short_url/shorten.json?source=' . $this->sina_appkey . '&url_long=' . $long_url; //獲取請求結果 $result = $this->curlQuery($url); //解析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; } } //根據短網址獲取長網址,此函數重用了不少sinaShortenUrl中的代碼,以方便你閱讀對比,你可以自行合並兩個函數 function sinaExpandUrl($short_url) { //拼接請求地址,此地址你可以在官方的文檔中查看到 $url = 'http://api.t.sina.com.cn/short_url/expand.json?source=' . $this->sina_appkey . '&url_short=' . $short_url; //獲取請求結果 $result = $this->curlQuery($url); //解析json $json = json_decode($result); //異常情況返回false if (isset($json->error) || !isset($json[0]->url_long) || $json[0]->url_long == '') { return false; } else { return $json[0]->url_long; } } } $urlObj = new UrlSwitch(); $url = $urlObj->filterUrl('http://www.test.com/url.php?type=url&openid=2323kfjdskljfldsajfdsa'); echo $urlObj->sinaShortenUrl($url);
長鏈接轉為短鏈接,不影響鏈接所帶參數