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 相关文章推荐
Snoopy类使用小例子
Apr 15 PHP
PHP 编程安全性小结
Jan 08 PHP
Win下如何安装PHP的APC拓展
Aug 07 PHP
PHP 验证码不显示只有一个小红叉的解决方法
Sep 30 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
Jun 17 PHP
php常用字符串比较函数实例汇总
Nov 24 PHP
php微信支付之APP支付方法
Mar 04 PHP
php实现的mongodb操作类
May 28 PHP
php版微信开发之接收消息,自动判断及回复相应消息的方法
Sep 23 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
May 20 PHP
thinkPHP5分页功能实现方法分析
Oct 25 PHP
Yii框架Session与Cookie使用方法示例
Oct 14 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
新闻分类录入、显示系统
2006/10/09 PHP
ionCube 一款类似zend的PHP加密/解密工具
2010/07/25 PHP
php生成zip压缩文件的方法详解
2013/06/09 PHP
thinkphp控制器调度使用示例
2014/02/24 PHP
php修改指定文件后缀的方法
2014/09/11 PHP
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
学习ExtJS 访问容器对象
2009/10/07 Javascript
关于js中window.location.href,location.href,parent.location.href,top.location.href的用法与区别
2010/10/18 Javascript
JS取文本框中最小值的简单实例
2013/11/29 Javascript
Javascript 赋值机制详解
2014/11/23 Javascript
JQuery实现展开关闭层的方法
2015/02/17 Javascript
基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解
2016/07/18 Javascript
省市二级联动小案例讲解
2016/07/24 Javascript
jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】
2017/03/09 Javascript
vue绑定事件后获取绑定事件中的this方法
2018/09/15 Javascript
vue插件mescroll.js实现移动端上拉加载和下拉刷新
2019/03/07 Javascript
node之本地服务器图片上传的方法示例
2019/03/26 Javascript
JavaScript判断浏览器运行环境的详细方法
2019/06/30 Javascript
zbar解码二维码和条形码示例
2014/02/07 Python
利用Python绘制数据的瀑布图的教程
2015/04/07 Python
Scrapy-redis爬虫分布式爬取的分析和实现
2017/02/07 Python
python使用Plotly绘图工具绘制柱状图
2019/04/01 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
2019/04/05 Python
python psutil监控进程实例
2019/12/17 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
使用python-Jenkins批量创建及修改jobs操作
2020/05/12 Python
keras 简单 lstm实例(基于one-hot编码)
2020/07/02 Python
Python和Bash结合在一起的方法
2020/11/13 Python
JOSEPH官网:英国奢侈时尚品牌
2018/01/31 全球购物
大学生个人求职信范文
2013/09/21 职场文书
省三好学生申请材料
2014/01/22 职场文书
信息学院毕业生自荐信范文
2014/03/04 职场文书
《开国大典》教学反思
2014/04/19 职场文书
安全先进班组材料
2014/12/26 职场文书
普宁寺导游词
2015/02/04 职场文书
2015年法律事务部工作总结
2015/07/27 职场文书