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


Posted in PHP onJuly 08, 2014

短网址服务,可能很多朋友都已经不再陌生,现在大部分微博、手机邮件提醒等地方已经有很多应用模式了,并占据了一定的市场。估计很多朋友现在也正在使用。 看过新浪的短连接服务,发现后面主要有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("https://3water.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("https://3water.com/"); 
 
?>
PHP 相关文章推荐
PHP 程序员也要学会使用“异常”
Jun 16 PHP
vs中通过剪切板循环来循环粘贴不同内容
Apr 30 PHP
无JS,完全php面向过程数据分页实现代码
Aug 27 PHP
ThinkPHP有变量的where条件分页实例
Nov 03 PHP
php实现的mongodb操作类
May 28 PHP
PHP实现QQ登录实例代码
Jan 14 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
Nov 29 PHP
php传值方式和ajax的验证功能
Mar 27 PHP
php使用socket调用http和smtp协议实例小结
Jul 26 PHP
laravel 根据不同组织加载不同视图的实现
Oct 14 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
Oct 15 PHP
PHP命令行与定时任务
Apr 01 PHP
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
Jul 08 #PHP
php中函数前加&amp;符号的作用分解
Jul 08 #PHP
PHP实现的连贯操作、链式操作实例
Jul 08 #PHP
PHP类中的魔术方法(Magic Method)简明总结
Jul 08 #PHP
PHP的魔术常量__METHOD__简介
Jul 08 #PHP
PHP中的插件机制原理和实例
Jul 08 #PHP
phpmailer在服务器上不能正常发送邮件的解决办法
Jul 08 #PHP
You might like
两个强悍的php 图像处理类1
2009/06/15 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
2015/03/23 PHP
功能强大的PHP发邮件类
2016/08/29 PHP
提高javascript效率 一次判断,而不要次次判断
2012/03/30 Javascript
深入浅出分析javaScript中this用法
2015/05/09 Javascript
深入理解jQuery layui分页控件的使用
2016/08/17 Javascript
JavaScript继承定义与用法实践分析
2018/05/28 Javascript
es6数据变更同步到视图层的方法
2019/03/04 Javascript
Vue模板语法中数据绑定的实例代码
2019/05/17 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
vuejs+element UI table表格中实现禁用部分复选框的方法
2019/09/20 Javascript
jQuery擦除插件eraser使用方法详解
2020/01/11 jQuery
解决vue组件销毁之后计时器继续执行的问题
2020/07/21 Javascript
JS的时间格式化和时间戳转换函数示例详解
2020/07/27 Javascript
[06:16]第十四期-国士无双绝地翻盘之撼地神牛
2014/06/24 DOTA
在Python中用get()方法获取字典键值的教程
2015/05/21 Python
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
分析Python读取文件时的路径问题
2018/02/11 Python
python实现在pandas.DataFrame添加一行
2018/04/04 Python
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
一些Centos Python 生产环境的部署命令(推荐)
2018/05/07 Python
PYTHON EVAL的用法及注意事项解析
2019/09/06 Python
Python数据可视化:幂律分布实例详解
2019/12/07 Python
关于Python 中的时间处理包datetime和arrow的方法详解
2020/03/19 Python
使用CSS3编写灰阶滤镜来制作黑白照片效果的方法
2016/05/09 HTML / CSS
amazeui时间组件的实现示例
2020/08/18 HTML / CSS
台湾菁英交友:结识黄金单身的台湾人
2018/01/22 全球购物
抗洪抢险事迹材料
2014/05/06 职场文书
公安学专业求职信
2014/07/27 职场文书
优秀团员事迹材料
2014/12/25 职场文书
优秀教研组申报材料
2014/12/26 职场文书
2015年中秋节活动总结
2015/03/23 职场文书
2015年质量管理工作总结范文
2015/05/18 职场文书
2015年语言文字工作总结
2015/07/23 职场文书
跟班学习心得体会(共6篇)
2016/01/23 职场文书
2019年家电促销广告语集锦
2019/10/21 职场文书