当前位置:首页 > PHP教程 > php应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-03-17 09:42:59 浏览: 评论:0 

这篇文章主要介绍了PHP生成短网址的3种方法代码实例,分别为纯随机生成法、枚举生成法、62位生成法,需要的朋友可以参考下

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

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

  1. <?php  
  2.    
  3. //纯随机生成方法 
  4. function random($length, $pool = '')  
  5.   {  
  6.     $random = '';  
  7.    
  8.     if (emptyempty($pool)) {  
  9.       $pool  = 'abcdefghkmnpqrstuvwxyz';  
  10.       $pool  .= '23456789';  
  11.     }  
  12.    
  13.     srand ((double)microtime()*1000000);  
  14.    
  15.     for($i = 0; $i < $length; $i++)  
  16.     {  
  17.       $random .= substr($pool,(rand()%(strlen ($pool))), 1);  
  18.     }  
  19.    
  20.     return $random;  
  21.   }  
  22.    
  23.  $a=random(6); 
  24. print_r($a);   
  25.    
  26. // 枚举生成方法 
  27. function shorturl($input) {  
  28.  $base32 = array (  
  29.   "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",   
  30. "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",   
  31. "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",   
  32. "u", "v", "w", "x", "y", "z",   
  33. "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",   
  34. "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",   
  35.  "U", "V", "W", "X", "Y", "Z" 
  36.   );  
  37.    
  38.  $hex = md5($input);  
  39.  $hexLen = strlen($hex);  
  40.  $subHexLen = $hexLen / 8;  
  41.  $output = array();  
  42.    
  43.  for ($i = 0; $i < $subHexLen; $i++) {  
  44.   $subHex = substr ($hex, $i * 8, 8);  
  45.   $int = 0x3FFFFFFF & (1 * ('0x'.$subHex));  
  46.   $out = '';  
  47.    
  48.   for ($j = 0; $j < 6; $j++) {  
  49.    $val = 0x0000001F & $int;  
  50.    $out .= $base32[$val];  
  51.    $int = $int >> 5;  
  52.   }  
  53.    
  54.   $output[] = $out;  
  55.  }  
  56.    
  57.  return $output;  
  58. }  
  59. $a=shorturl("https://www.phpfensi.com"); 
  60. print_r($a); 
  61. //62 位生成方法 
  62.    
  63. function base62($x)  
  64.    
  65. {  
  66.    
  67. $show= '';  
  68.    
  69.  while($x> 0) {  
  70.    
  71. $s= $x% 62;  
  72.    
  73. if($s> 35) {  
  74.    
  75. $s= chr($s+61);        
  76.    
  77. } elseif($s> 9 && $s<=35) {  
  78.    
  79. $s= chr($s+ 55);  
  80.    
  81. }  
  82.    
  83. $show.= $s;  
  84.    
  85.  $x= floor($x/62);  
  86.    
  87. }  
  88.    
  89. return $show;    
  90.    
  91. }  
  92.    
  93. function urlShort($url)  
  94.    
  95. {  
  96.    
  97. $url= crc32($url);  
  98.    
  99. $result= sprintf("%u", $url);  
  100.    
  101. return base62($result);  
  102.    
  103.  }  
  104.    
  105. echo urlShort("https://www.phpfensi.com/");  
  106.    
  107. ?> 

Tags: PHP生成短网址

分享到: