當前位置:
首頁 > 知識 > 如何實現PHP長網址與短網址

如何實現PHP長網址與短網址

什麼是長鏈接、短鏈接

顧名思義,長鏈接就是一個很長的鏈接;短鏈接就是一個很短的鏈接。長鏈接可以生成短鏈接,短鏈接來源於長鏈接。

為什麼要使用長鏈接、短鏈接

更加美觀,我們可以對長鏈接和短鏈接進行對比,很顯然可以看出短鏈接相對成鏈接來說更加的短小,顯得更加的美觀。

get的方式,同時也能看出請求了哪些參數。然而短鏈接http://t.cn/RNGQRUJ,我們只能訪問不能輕易的查看處攜帶了

哪些參數等條件。

使用場景

微博內容的分享

簡訊包含的鏈接

微信分享鏈接

實現方法

按照 百度百科 的解釋,長鏈接轉換為短鏈接主要採用了md5加密的方式來實現轉換的。

代碼實現

創建一個curl工具函數

// SINA_APPKEY就是你在微信開發者平台的appkey

define( SINA_APPKEY , );

functioncurlQuery($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,);//將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; }

創建短鏈接和長鏈接的方法

//根據長網址獲取短網址

functionsinaShortenUrl($long_url) {//拼接請求地址,此地址你可以在官方的文檔中查看到$url= http://api.t.sina.com.cn/short_url/shorten.json?source= .

SINA_APPKEY . &url_long= .$long_url;//獲取請求結果$result= curlQuery($url);//下面這行注釋用於調試,//print_r($result);exit();//解析json$json= json_decode($result);//異常情況返回falseif(isset($json->error) ||

!isset($json[]->url_short) ||

$json[]->url_short == ) { return false; }else{ return$json[]->url_short; } }

//根據短網址獲取長網址,此函數重用了不少sinaShortenUrl中的代碼,

//以方便你閱讀對比,你可以自行合併兩個函數

functionsinaExpandUrl($short_url) {//拼接請求地址,此地址你可以在官方的文檔中查看到$url= http://api.t.sina.com.cn/short_url/expand.json?source= .

SINA_APPKEY . &url_short= .$short_url;//獲取請求結果$result= curlQuery($url);//下面這行注釋用於調試//print_r($result);exit();//解析json$json= json_decode($result);//異常情況返回falseif(isset($json->error) || !isset($json[]->url_long) ||$json[]->url_long == ) { return false; }else{ return$json[]->url_long; } }

創建一個url處理函數

//簡單處理下url,sina對於沒有協議(http://)開頭的和不規範的地址會返回錯誤functionfilterUrl($url = ){ $url = trim(strtolower($url)); $url = trim(preg_replace( /^http:// , , $url));if($url == ) {returnfalse; }else{returnurlencode( http:// . $url); } }

調用函數

//要縮短的網址

$url ="http://www.qqdeveloper.com/detail/25/1.html";

//這裡自己看著辦,修改成你要縮短的網址還是獲取post的數據還是怎麼滴。

$url = filterUrl($url);//對URL進行簡單處理的方法

echo$short = sinaShortenUrl($url);//根據傳入的長網址生產短網址

echo"";

echo$ulong = sinaExpandUrl($short);

示例代碼下載地址: http://pan.baidu.com/s/1jI9oLxG


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 PHP技術大全 的精彩文章:

Nginx 架構初探
Nginx的master和worker進程間的通信
zendAPI:讓 PHP 的擴展開發成為一種享受
php的垃圾回收機制——引用計數
colly-go語言編寫的CPU單核超過1k次請求的web採集利器

TAG:PHP技術大全 |