PHP實現URL長串連產生短連結操作

來源:互聯網
上載者:User
短連結,通俗來說,就是將長的URL 網址,通過程式計算等方式,轉換為簡短的網址字串。

這樣的話其好處為:1、內容需要;2、方便使用;3、便於管理。

早期短連結廣泛應用於圖片上傳網站,通過縮短網址URL連結字數,達到減少代碼字串的目的。更便於使用者引用網址,寫入代碼中,“節省”字元數空間。常見於網店圖片分類的使用,因有字元限制,運用短連結,達到外鏈圖片的目的。自微博盛行以來,在微博字數有限的特色下,短連結也盛行於微博網站,以節省字數,給博主發布更多文字的空間。

<?php/** * 由長串連產生短連結操作 *  * 演算法描述:使用6個字元來表示短連結,我們使用ASCII字元中的'a'-'z','0'-'9','A'-'Z',共計62個字元做為集合。 *      每個字元有62種狀態,六個字元就可以表示62^6(56800235584),那麼如何得到這六個字元, *           具體描述如下: *  1. 對傳入的長URL+設定key值 進行Md5,得到一個32位的字串(32 字元十六進位數),即16的32次方; *        2. 將這32位分成四份,每一份8個字元,將其視作16進位串與0x3fffffff(30位1)與操作, 即超過30位的忽略處理; *  3. 這30位分成6段, 每5個一組,算出其整數值,然後映射到我們準備的62個字元中, 依次進行獲得一個6位的短連結地址。 * * @author flyer0126 * @since 2012/07/13 */function shortUrl( $long_url ){    $key = 'flyer0126';    $base32 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";        // 利用md5演算法方式產生hash值    $hex = hash('md5', $long_url.$key);    $hexLen = strlen($hex);    $subHexLen = $hexLen / 8;        $output = array();    for( $i = 0; $i < $subHexLen; $i++ )    {    // 將這32位分成四份,每一份8個字元,將其視作16進位串與0x3fffffff(30位1)與操作    $subHex = substr($hex, $i*8, 8);    $idx = 0x3FFFFFFF & (1 * ('0x' . $subHex));       // 這30位分成6段, 每5個一組,算出其整數值,然後映射到我們準備的62個字元    $out = '';    for( $j = 0; $j < 6; $j++ )    {    $val = 0x0000003D & $idx;    $out .= $base32[$val];    $idx = $idx >> 5;    }    $output[$i] = $out;    }        return $output;}  $url = 'http://flyer0126.iteye.com/';$ret = shortUrl($url);var_dump($ret);################ 列印結果 ################/* array(4) {[0]=>string(6) "2aEzqe"[1]=>string(6) "Rj6Bve"[2]=>string(6) "f2mQvi"[3]=>string(6) "z2eqYv"} */

#將url與短連結結果存入資料庫,取其中一個用於顯示即可。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.