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 相关文章推荐
java EJB 加密与解密原理的一个例子
Jan 11 PHP
php xml文件操作代码(一)
Mar 20 PHP
PHP函数学习之PHP函数点评
Jul 05 PHP
php使浏览器直接下载pdf文件的方法
Nov 15 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
Dec 22 PHP
php除数取整示例
Apr 24 PHP
php+jQuery.uploadify实现文件上传教程
Dec 26 PHP
PHP+redis实现添加处理投票的方法
Nov 14 PHP
PHP7新增运算符用法实例分析
Sep 26 PHP
PHP输出Excel PHPExcel的方法
Jul 26 PHP
YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
Mar 18 PHP
PHP7 标准库修改
Mar 09 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获取谷歌PR值算法,附上php查询PR值代码示例
2011/12/25 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
2014/07/30 PHP
详解PHP函数 strip_tags 处理字符串缺陷bug
2017/06/11 PHP
PHP面向对象程序设计之构造方法和析构方法详解
2019/06/13 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
使用window.prompt()实现弹出用户输入的对话框
2015/04/13 Javascript
JS实现的新浪微博大厅文字内容滚动效果代码
2015/11/05 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
2015/12/31 Javascript
Bootstrap树形组件jqTree的简单封装
2016/01/25 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
Angular2使用Guard和Resolve进行验证和权限控制
2017/04/24 Javascript
详解ES6之用let声明变量以及let loop机制
2017/07/15 Javascript
JS实现登录页密码的显示和隐藏功能
2017/12/06 Javascript
jQuery实现常见的隐藏与展示列表效果示例
2018/06/04 jQuery
微信小程序基于picker实现级联菜单
2019/02/15 Javascript
[00:09]DOTA2全国高校联赛 精彩活动引爆全场
2018/05/30 DOTA
Python continue语句用法实例
2014/03/11 Python
python实现监控linux性能及进程消耗性能的方法
2014/07/25 Python
Python爬取网易云音乐热门评论
2017/03/31 Python
Python中 map()函数的用法详解
2018/07/10 Python
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
python实现五子棋小程序
2019/06/18 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
2020/01/20 Python
Python分析最近大火的网剧《隐秘的角落》
2020/07/02 Python
GafasWorld西班牙:购买太阳镜、眼镜和隐形眼镜
2019/09/08 全球购物
Yummie官方网站:塑身衣和衣柜必需品
2019/10/29 全球购物
Parfumdreams芬兰:购买香水和化妆品
2021/02/13 全球购物
Linden Leaves官网:新西兰纯净护肤品
2020/12/20 全球购物
土木工程应届生求职信
2013/10/31 职场文书
车间主管岗位职责
2013/11/14 职场文书
文化产业实施方案
2014/06/07 职场文书
驾驶员安全责任书
2014/07/22 职场文书
学校机关党总支领导班子整改工作方案
2014/10/26 职场文书
地道战观后感500字
2015/06/04 职场文书
蓝天保卫战收官在即 :15行业将开展环保分级评价
2019/07/19 职场文书
Grafana可视化监控系统结合SpringBoot使用
2022/04/19 Redis