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如何得到当前页和上一页的地址?
Nov 27 PHP
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
Dec 05 PHP
基于PHP CURL用法的深入分析
Jun 09 PHP
php调整gif动画图片尺寸示例代码分享
Dec 05 PHP
laravel 5 实现模板主题功能(续)
Mar 02 PHP
php修改上传图片尺寸的方法
Apr 14 PHP
linux下为php添加iconv模块的方法
Feb 28 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
Oct 29 PHP
简单实现PHP留言板功能
Dec 21 PHP
Laravel中获取路由参数Route Parameters的五种方法示例
Sep 29 PHP
PHP中define() 与 const定义常量的区别详解
Jun 25 PHP
PHP针对redis常用操作实例详解
Aug 17 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用户指南-cookies部分
2006/10/09 PHP
php session处理的定制
2009/03/16 PHP
PHP COOKIE及时生效的方法介绍
2014/02/14 PHP
php实现的ping端口函数实例
2014/11/12 PHP
PHP+Mysql+jQuery查询和列表框选择操作实例讲解
2015/10/22 PHP
php unlink()函数使用教程
2018/07/12 PHP
一个不错的用JavaScript实现的UBB编码函数
2007/03/09 Javascript
Node.js和PHP根据ip获取地理位置的方法
2014/03/14 Javascript
Javascript表单验证要注意的事项
2014/09/29 Javascript
angularJS提交表单(form)
2015/02/09 Javascript
JavaScript采用递归算法计算阶乘实例
2015/08/04 Javascript
Javascript 计算字符串在localStorage中所占字节数
2015/10/21 Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
2015/10/21 Javascript
基于javascript实现仿百度输入框自动匹配功能
2016/01/03 Javascript
谈谈Vue.js——vue-resource全攻略
2017/01/16 Javascript
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
2017/05/30 Javascript
微信小程序实现滑动操作代码
2020/04/23 Javascript
JS如何生成动态列表
2020/09/22 Javascript
深度定制Python的Flask框架开发环境的一些技巧总结
2016/07/12 Python
Python列表删除的三种方法代码分享
2017/10/31 Python
python定时按日期备份MySQL数据并压缩
2019/04/19 Python
使用Python实现跳帧截取视频帧
2019/05/31 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
2019/09/06 Python
python实现的批量分析xml标签中各个类别个数功能示例
2019/12/30 Python
Python 实现自动登录+点击+滑动验证功能
2020/06/10 Python
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
孕妇内衣和胸罩:Cake Maternity
2018/07/16 全球购物
Fossil德国官网:化石手表、手袋、珠宝及配件
2019/12/07 全球购物
英语专业学子个人的自我评价
2013/10/02 职场文书
农贸市场管理制度
2014/01/31 职场文书
车辆工程专业求职信
2014/04/28 职场文书
计算机应用专业自荐信
2014/07/05 职场文书
食品委托检验协议书范本
2014/09/12 职场文书
公司领导班子对照检查材料
2014/09/24 职场文书
2016年党员公开承诺书格式范文
2016/03/24 职场文书
python基于tkinter制作无损音乐下载工具
2021/03/29 Python