当前位置:首页 > 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. $schr($s+61);        
  76.    
  77. elseif($s> 9 && $s<=35) {  
  78.    
  79. $schr($s+ 55);  
  80.    
  81. }  
  82.    
  83. $show.= $s;  
  84.    
  85.  $xfloor($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生成短网址

分享到: