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抓即时股票信息
Oct 09 PHP
PHP XML操作类DOMDocument
Dec 16 PHP
php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
Jan 16 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
Oct 29 PHP
如何使用Strace调试工具
Jun 03 PHP
一些php项目中比较通用的php自建函数的详解
Jun 06 PHP
THINKPHP项目开发中的日志记录实例分析
Dec 01 PHP
Codeigniter控制器controller继承问题实例分析
Jan 19 PHP
php实现中文转数字
Feb 18 PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
Apr 23 PHP
php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证
May 04 PHP
php+mysql实现简单登录注册修改密码网页
Nov 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
实时抓取YAHOO股票报价的代码
2006/10/09 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
2019/02/13 PHP
权威JavaScript 中的内存泄露模式
2007/08/13 Javascript
javascript document.referrer 用法
2009/04/30 Javascript
Select标签下拉列表二级联动级联实例代码
2014/02/07 Javascript
ie下$.getJSON出现问题的解决方法
2014/02/12 Javascript
用headjs来管理和加载js 提高网站加载速度
2016/11/29 Javascript
折叠菜单及选择器的运用
2017/02/03 Javascript
在vue项目中使用sass的配置方法
2018/03/20 Javascript
详解Chart.js轻量级图表库的使用经验
2018/05/22 Javascript
Vue数据绑定实例写法
2019/08/06 Javascript
JS开发自己的类库实例分析
2019/08/28 Javascript
微信小程序服务器日期格式化问题
2020/01/07 Javascript
nuxt 实现在其它js文件中使用store的方式
2020/11/05 Javascript
教你如何在Django 1.6中正确使用 Signal
2014/06/22 Python
python实现在控制台输入密码不显示的方法
2015/07/02 Python
Python实现Linux命令xxd -i功能
2016/03/06 Python
小议Python中自定义函数的可变参数的使用及注意点
2016/06/21 Python
Python实现字符串与数组相互转换功能示例
2017/09/22 Python
Pandas探索之高性能函数eval和query解析
2017/10/28 Python
tensorflow训练中出现nan问题的解决
2018/02/10 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
2018/09/27 Python
python实现自动化上线脚本的示例
2019/07/01 Python
python图形绘制奥运五环实例讲解
2019/09/14 Python
python自动从arxiv下载paper的示例代码
2020/12/05 Python
用纯css3和html制作泡沫对话框实现代码
2013/03/21 HTML / CSS
Bugatchi官方网站:男士服装在线
2019/04/10 全球购物
澳大利亚100%丝绸多彩度假装商店:TheSwankStore
2019/09/04 全球购物
同步和异步有何异同,在什么情况下分别使用他们?举例说明
2014/02/27 面试题
语文复习计划
2015/01/19 职场文书
纪委立案决定书
2015/06/24 职场文书
小学大队委竞选口号
2015/12/25 职场文书
CSS3 制作的悬停缩放特效
2021/04/13 HTML / CSS
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python
Go 语言中 20 个占位符的整理
2021/10/16 Golang