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学习 计数器实例代码
Jun 15 PHP
PHP MSSQL 存储过程的方法
Dec 24 PHP
php 获取远程网页内容的函数
Sep 08 PHP
php include加载文件两种方式效率比较
Aug 08 PHP
PHP递归算法的详细示例分析
Feb 19 PHP
PHP中is_file()函数使用指南
May 08 PHP
PHP伪造来源HTTP_REFERER的方法实例详解
Jul 06 PHP
使用PHP编写发红包程序
Jul 22 PHP
PHP闭包函数详解
Feb 13 PHP
thinkphp验证码的实现(form、ajax实现验证)
Jul 28 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
Nov 05 PHP
PHP封装的分页类与简单用法示例
Feb 25 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 define的第二个参数使用方法
2013/11/04 PHP
php实现约瑟夫问题的方法小结
2015/03/23 PHP
php时间计算相关问题小结
2016/05/09 PHP
PHP微信公众号自动发送红包API
2016/06/01 PHP
php 截取utf-8格式的字符串实例代码
2016/10/30 PHP
PHP互换两个变量值的方法(不用第三变量)
2016/11/14 PHP
PHP使用DOM和simplexml读取xml文档的方法示例
2017/02/08 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
PHP中str_split()函数的用法讲解
2019/04/11 PHP
laravel-admin自动生成模块,及相关基础配置方法
2019/10/08 PHP
jquery.cvtooltip.js 基于jquery的气泡提示插件
2010/11/19 Javascript
js获取当前日期时间及其它操作汇总
2015/04/17 Javascript
JavaScript程序开发之JS代码放置的位置
2016/01/15 Javascript
js控件Kindeditor实现图片自动上传功能
2020/07/20 Javascript
基于jQuery实现弹幕APP
2017/02/10 Javascript
nodejs创建简易web服务器与文件读写的实例
2017/09/07 NodeJs
jquery中有哪些api jQuery主要API
2017/11/20 jQuery
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
vue中 v-for循环的用法详解
2020/02/19 Javascript
vue webpack build资源相对路径的问题及解决方法
2020/06/04 Javascript
详解js创建对象的几种方式和对象方法
2021/03/01 Javascript
[01:14]DOTA2亚洲邀请赛 ShowOpen
2015/02/07 DOTA
Python通过websocket与js客户端通信示例分析
2014/06/25 Python
详解python 字符串和日期之间转换 StringAndDate
2017/05/04 Python
Python3 加密(hashlib和hmac)模块的实现
2017/11/23 Python
python删除某个字符
2018/03/19 Python
Python 模拟生成动态产生验证码图片的方法
2020/02/01 Python
基于python 将列表作为参数传入函数时的测试与理解
2020/06/05 Python
python smtplib发送多个email联系人的实现
2020/10/09 Python
小区门卫工作职责
2013/12/14 职场文书
商务英语专业求职信范文
2014/01/28 职场文书
公司内部升职自荐信
2015/03/27 职场文书
班主任工作总结范文
2015/08/13 职场文书
php png失真的原因及解决办法
2021/10/24 PHP
Windows server 2012搭建FTP服务器
2022/04/29 Servers