PHP生成短网址的3种方法代码实例

5年以前  |  阅读数:780 次  |  编程语言:PHP 

短网址服务,可能很多朋友都已经不再陌生,现在大部分微博、手机邮件提醒等地方已经有很多应用模式了,并占据了一定的市场。估计很多朋友现在也正在使用。 看过新浪的短连接服务,发现后面主要有6个字符串组成。

太多算法的东西,也没必要去探讨太多,最主要的还是实现,下面是三种方法的代码:


    <?php 

    //纯随机生成方法
    function random($length, $pool = '') 
      { 
        $random = ''; 

        if (empty($pool)) { 
          $pool  = 'abcdefghkmnpqrstuvwxyz'; 
          $pool  .= '23456789'; 
        } 

        srand ((double)microtime()*1000000); 

        for($i = 0; $i < $length; $i++) 
        { 
          $random .= substr($pool,(rand()%(strlen ($pool))), 1); 
        } 

        return $random; 
      } 

     $a=random(6);
    print_r($a);  

    // 枚举生成方法
    function shorturl($input) { 
     $base32 = array ( 
      "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",  
    "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",  
    "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",  
    "u", "v", "w", "x", "y", "z",  
    "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",  
    "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",  
     "U", "V", "W", "X", "Y", "Z"
      ); 

     $hex = md5($input); 
     $hexLen = strlen($hex); 
     $subHexLen = $hexLen / 8; 
     $output = array(); 

     for ($i = 0; $i < $subHexLen; $i++) { 
      $subHex = substr ($hex, $i * 8, 8); 
      $int = 0x3FFFFFFF & (1 * ('0x'.$subHex)); 
      $out = ''; 

      for ($j = 0; $j < 6; $j++) { 
       $val = 0x0000001F & $int; 
       $out .= $base32[$val]; 
       $int = $int >> 5; 
      } 

      $output[] = $out; 
     } 

     return $output; 
    } 
    $a=shorturl("http://www.jb51.net");
    print_r($a);
    //62 位生成方法

    function base62($x) 

    { 

    $show= ''; 

     while($x> 0) { 

    $s= $x% 62; 

    if($s> 35) { 

    $s= chr($s+61);       

    } elseif($s> 9 && $s<=35) { 

    $s= chr($s+ 55); 

    } 

    $show.= $s; 

     $x= floor($x/62); 

    } 

    return $show;   

    } 

    function urlShort($url) 

    { 

    $url= crc32($url); 

    $result= sprintf("%u", $url); 

    return base62($result); 

     } 

    echo urlShort("http://www.jb51.net/"); 

    ?>
 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
贪吃蛇
文件下载
双位运算符
发送邮件
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
提取后缀名
年的日历图
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例