• 技术文章 >后端开发 >php教程

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

    2016-06-01 11:52:10原创411
    短网址服务,可能很多朋友都已经不再陌生,现在大部分微博、手机邮件提醒等地方已经有很多应用模式了,并占据了一定的市场。估计很多朋友现在也正在使用。 看过新浪的短连接服务,发现后面主要有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.bitsCN.com");
    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.bitsCN.com/"); 
     
    ?>
    
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:PHP 生成短网址
    上一篇:CodeIgniter安全相关设置汇总_PHP 下一篇:php去掉URL网址中带有PHPSESSID的配置方法_PHP
    千万级数据并发解决方案

    相关文章推荐

    • PHP删除数组中空值的方法介绍_php实例• wordpress自定义url参数实现路由功能的代码示例_php实例• 想下载个论坛,哪种好?该如何解决• 密码是什么啊该如何解决• 自选值插入数据库解决办法
    1/1

    PHP中文网