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+xslt在windows平台上
Oct 09 PHP
php array_slice函数的使用以及参数详解
Aug 30 PHP
一步一步学习PHP(1) php开发环境配置
Feb 15 PHP
php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
May 15 PHP
php动态实现表格跨行跨列实现代码
Nov 06 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
Jun 19 PHP
php编写的一个E-mail验证类
Mar 25 PHP
PHP实现生成唯一会员卡号
Aug 24 PHP
Laravel中的Blade模板引擎示例详解
Oct 10 PHP
PHP设计模式之工厂模式定义与用法详解
Apr 03 PHP
Bootstrap+PHP实现多图上传功能实例详解
Apr 08 PHP
php strftime函数获取日期时间(switch用法)
May 16 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
东芝TOSHIBA RP-F11电路分析
2021/03/02 无线电
PHP开发框架总结收藏
2008/04/24 PHP
php定时删除文件夹下文件(清理缓存文件)
2013/01/23 PHP
php使用正则表达式获取字符串中的URL
2016/12/29 PHP
Laravel如何使用数据库事务及捕获事务失败后的异常详解
2017/10/23 PHP
Js切换功能的简单方法
2010/11/23 Javascript
jquery load()在firefox(火狐)下显示不正常的解决方法
2011/04/05 Javascript
使用闭包对setTimeout进行简单封装避免出错
2013/07/10 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
2014/04/15 Javascript
JS实现可展开折叠层的鼠标拖曳效果
2015/10/09 Javascript
jQuery调用WebMethod(PageMethod) NET2.0的方法
2016/04/15 Javascript
node.js路径处理方法以及绝对路径详解
2021/03/04 Javascript
Webpack中publicPath路径问题详解
2018/05/03 Javascript
vue项目中使用Hbuilder打包app 设置沉浸式状态栏的方法
2018/10/22 Javascript
原生js实现贪吃蛇游戏
2020/10/26 Javascript
[00:15]TI9地铁玩家打卡
2019/08/11 DOTA
python 提取文件的小程序
2009/07/29 Python
Python操作MySQL简单实现方法
2015/01/26 Python
python中黄金分割法实现方法
2015/05/06 Python
Python保存MongoDB上的文件到本地的方法
2016/03/16 Python
Python抓取电影天堂电影信息的代码
2016/04/07 Python
深入解析Python中的上下文管理器
2016/06/28 Python
插入排序_Python与PHP的实现版(推荐)
2017/05/11 Python
Python turtle画图库&amp;&amp;画姓名实例
2020/01/19 Python
基于python实现计算两组数据P值
2020/07/10 Python
Spartoo英国:欧洲最大的网上鞋店
2016/09/13 全球购物
澳大利亚网上买书:Angus & Robertson
2019/07/21 全球购物
会计找工作求职信范文
2013/12/09 职场文书
顶撞领导检讨书
2014/01/29 职场文书
《记承天寺夜游》教学反思
2014/02/16 职场文书
学习方法演讲稿
2014/05/10 职场文书
2014年感恩节活动策划方案
2014/10/06 职场文书
四风问题对照检查材料思想汇报
2014/10/07 职场文书
学校三八妇女节活动总结
2015/02/06 职场文书
团拜会主持词
2015/07/04 职场文书
工作后的感想
2015/08/07 职场文书