最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP將URL轉(zhuǎn)換成短網(wǎng)址的算法分享

 更新時(shí)間:2016年09月13日 11:30:02   投稿:daisy  
短網(wǎng)址(Short URL)顧名思義就是在形式上比較短的網(wǎng)址。在Web 2.0的今天,不得不說這是一個(gè)潮流。目前已經(jīng)有許多類似服務(wù),借助短網(wǎng)址您可以用簡(jiǎn)短的網(wǎng)址替代原來冗長(zhǎng)的網(wǎng)址,讓使用者可以更容易的分享鏈接,下面來看看如何用PHP實(shí)現(xiàn)這個(gè)功能,有需要的朋友們可以參考。

前言

短網(wǎng)址服務(wù),可能很多朋友都已經(jīng)不再陌生,現(xiàn)在大部分微博、手機(jī)郵件提醒等地方已經(jīng)有很多應(yīng)用模式了,并占據(jù)了一定的市場(chǎng)。估計(jì)很多朋友現(xiàn)在也正在使用。

短鏈接的好處:

1、內(nèi)容需要;
2、用戶友好;
3、便于管理。

下面是用PHP實(shí)現(xiàn)短網(wǎng)址轉(zhuǎn)換的算法,代碼如下:

PHP

<?php
//短網(wǎng)址生成算法
class ShortUrl {
  
  //字符表
  public static $charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
 
  public static function encode($url)
  {
    $key = 'abc'; //加鹽
    $urlhash = md5($key . $url);
    $len = strlen($urlhash);
 
    //將加密后的串分成4段,每段4字節(jié),對(duì)每段進(jìn)行計(jì)算,一共可以生成四組短連接
    for ($i = 0; $i < 4; $i++) {
      $urlhash_piece = substr($urlhash, $i * $len / 4, $len / 4);
      
      //將分段的位與0x3fffffff做位與,0x3fffffff表示二進(jìn)制數(shù)的30個(gè)1,即30位以后的加密串都?xì)w零
      //此處需要用到hexdec()將16進(jìn)制字符串轉(zhuǎn)為10進(jìn)制數(shù)值型,否則運(yùn)算會(huì)不正常
      $hex = hexdec($urlhash_piece) & 0x3fffffff;
 
      //域名根據(jù)需求填寫
      $short_url = "http://t.cn/";
      
      //生成6位短網(wǎng)址
      for ($j = 0; $j < 6; $j++) {
        
        //將得到的值與0x0000003d,3d為61,即charset的坐標(biāo)最大值
        $short_url .= self::$charset[$hex & 0x0000003d];
        
        //循環(huán)完以后將hex右移5位
        $hex = $hex >> 5;
      }
 
      $short_url_list[] = $short_url;
    }
 
    return $short_url_list;
  }
}
 
$url = "http://www.sunbloger.com/";
$short = ShortUrl::encode($url);
print_r($short);
?>

通常我們用四組網(wǎng)址中的第一組即可。

這里需要注意的是,這個(gè)算法是不可逆的,因此,通常的做法是將短網(wǎng)址和對(duì)應(yīng)的原網(wǎng)址存入數(shù)據(jù)庫(kù),當(dāng)訪問時(shí),從數(shù)據(jù)庫(kù)中取出匹配的原網(wǎng)址,通過301或header進(jìn)行跳轉(zhuǎn)。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)或者工作帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

最新評(píng)論

永福县| 沙雅县| 合水县| 家居| 阳山县| 凌海市| 江北区| 南乐县| 类乌齐县| 简阳市| 南安市| 城固县| 武邑县| 灌南县| 开江县| 柘荣县| 望江县| 台东市| 自贡市| 莎车县| 鹤岗市| 东丰县| 临汾市| 霍城县| 礼泉县| 元朗区| 咸阳市| 广昌县| 卢湾区| 丹东市| 香格里拉县| 镶黄旗| 赤峰市| 申扎县| 宁波市| 辛集市| 定安县| 多伦县| 班玛县| 崇仁县| 浦县|