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+MYSQL的文章管理系统(二)
Oct 09 PHP
PHP学习之输出字符串(echo,print,printf,print_r和var_dump)
Apr 17 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
Oct 17 PHP
基于php 随机数的深入理解
Jun 05 PHP
php小技巧之过滤ascii控制字符
May 14 PHP
PHP设计模式之观察者模式实例
Feb 22 PHP
[原创]smarty简单模板变量输出方法
Jul 09 PHP
PHP实现导出excel数据的类库用法示例
Oct 15 PHP
php 访问oracle 存储过程实例详解
Jan 08 PHP
PHP调用API接口实现天气查询功能的示例
Sep 21 PHP
PHP定义字符串的四种方式详解
Feb 06 PHP
php支付宝系列之电脑网站支付
May 30 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中在数据库中保存Checkbox数据(1)
2006/10/09 PHP
php+ajax实现图片文件上传功能实例
2014/06/17 PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
2015/07/06 PHP
PHP中define() 与 const定义常量的区别详解
2019/06/25 PHP
jquery中通过过滤器获取表单元素的实现代码
2011/07/05 Javascript
时间戳转换为时间 年月日时间的JS函数
2013/08/19 Javascript
js通过location.search来获取页面传来的参数
2014/09/11 Javascript
jQuery中size()方法用法实例
2014/12/27 Javascript
JavaScript实现强制重定向至HTTPS页面
2015/06/10 Javascript
JavaScript多图片上传案例
2015/09/28 Javascript
jQuery使用animate实现ul列表项相互飘动效果示例
2016/09/16 Javascript
JavaScript登录验证基础教程
2017/11/01 Javascript
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
2017/11/06 Javascript
JS文件中加载jquery.js的实例代码
2018/05/05 jQuery
jQuery实现的滑块滑动导航效果示例
2018/06/04 jQuery
解决vue项目axios每次请求session不一致的问题
2020/10/24 Javascript
小程序组件传值和引入sass的方法(使用vant Weapp组件库)
2020/11/24 Javascript
[01:18:35]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第一场 1月29日
2021/03/11 DOTA
Python字符串替换实例分析
2015/05/11 Python
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
pytorch 可视化feature map的示例代码
2019/08/20 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
tensorflow之变量初始化(tf.Variable)使用详解
2020/02/06 Python
Python greenlet和gevent使用代码示例解析
2020/04/01 Python
Python web如何在IIS发布应用过程解析
2020/05/27 Python
Selenium+BeautifulSoup+json获取Script标签内的json数据
2020/12/07 Python
Spartoo葡萄牙鞋类网站:线上销售鞋履与时尚配饰
2017/01/11 全球购物
英国复古和经典球衣网站:Vintage Football Shirts
2018/10/05 全球购物
TecoBuy澳大利亚:在线电子和小工具商店
2020/06/25 全球购物
写一个在SQL Server创建表的SQL语句
2012/03/10 面试题
审计工作个人的自我评价
2013/12/25 职场文书
服务之星事迹材料
2014/05/03 职场文书
2015年度绩效考核工作总结
2015/05/27 职场文书
李强为自己工作观后感
2015/06/11 职场文书
想要创业,那么你做好准备了吗?
2019/07/01 职场文书
Android Gradle 插件自定义Plugin实现注意事项
2022/06/16 Java/Android