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网站在线人数统计
Apr 09 PHP
PHP 分页类(模仿google)-面试题目解答
Sep 13 PHP
让PHP开发者事半功倍的十大技巧小结
Apr 20 PHP
PHP数组对比函数,存在交集则返回真,否则返回假
Feb 03 PHP
PHP 事件机制(2)
Mar 23 PHP
PHP 使用MySQL管理Session的回调函数详解
Jun 21 PHP
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
Jun 28 PHP
PHP判断表单复选框选中状态完整例子
Jun 24 PHP
php使用sql server验证连接数据库的方法
Dec 25 PHP
PHP对象克隆clone用法示例
Sep 28 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
Jul 03 PHP
laravel开发环境homestead搭建过程详解
Jul 03 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语法(2)
2006/10/09 PHP
PHP 裁剪图片成固定大小代码方法
2009/09/09 PHP
PHP中UNIX时间戳和日期间的转换与计算实例
2014/11/19 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
2017/05/03 PHP
js类 from qq
2006/11/13 Javascript
最短的IE判断代码
2011/03/13 Javascript
禁止你的左键复制实用技巧
2013/01/04 Javascript
E3 tree 1.6在Firefox下显示问题的修复方法
2013/01/30 Javascript
两个listbox实现选项的添加删除和搜索
2013/03/01 Javascript
使用简洁的jQuery方法实现隔行换色功能
2014/01/02 Javascript
js获得当前系统日期时间的方法
2015/05/06 Javascript
实现无刷新联动例子汇总
2015/05/20 Javascript
JavaScript在网页中画圆的函数arc使用方法
2015/11/13 Javascript
js实现的简单图片浮动效果完整实例
2016/05/10 Javascript
jQuery的ajax和遍历数组json实例代码
2016/08/01 Javascript
node.js版本管理工具n无效的原理和解决方法
2016/11/24 Javascript
超全面的javascript中变量命名规则
2017/02/09 Javascript
浅谈Vue 初始化性能优化
2017/08/31 Javascript
layer.js open 隐藏滚动条的例子
2019/09/05 Javascript
[14:57]DOTA2 HEROS教学视频教你分分钟做大人-幽鬼
2014/06/13 DOTA
python3.5仿微软计算器程序
2020/03/30 Python
python中函数传参详解
2016/07/03 Python
Python去除、替换字符串空格的处理方法
2018/04/01 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
2018/12/11 Python
如何用C代码给Python写扩展库(Cython)
2019/05/17 Python
python flask框架实现传数据到js的方法分析
2019/06/11 Python
Python + OpenCV 实现LBP特征提取的示例代码
2019/07/11 Python
python实现快递价格查询系统
2020/03/03 Python
Python通过递归函数输出嵌套列表元素
2020/10/15 Python
Armor Lux法国官方网站:水手服装、成衣和内衣
2020/05/26 全球购物
德语专业求职信
2014/03/12 职场文书
重阳节慰问信
2015/02/15 职场文书
2015年公民道德宣传日活动总结
2015/03/23 职场文书
于丹论语心得观后感
2015/06/15 职场文书
使用vue-element-admin框架从后端动态获取菜单功能的实现
2021/04/29 Vue.js
利用JuiceFS使MySQL 备份验证性能提升 10 倍
2022/03/17 MySQL