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下用rmdir实现删除目录的三种方法小结
Apr 20 PHP
一步一步学习PHP(7) php 字符串相关应用
Mar 05 PHP
PHP is_dir() 判断给定文件名是否是一个目录
May 10 PHP
php采集文章中的图片获取替换到本地(实现代码)
Jul 08 PHP
php获取用户浏览器版本的方法
Jan 03 PHP
PHP生成压缩文件实例
Feb 07 PHP
PHP实现RTX发送消息提醒的实例代码
Jan 03 PHP
PHP PDO操作MySQL基础教程
Jun 05 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
Nov 17 PHP
PHP开发实现快递查询功能详解
Apr 08 PHP
PHP sdk文档处理常用代码示例解析
Dec 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中is_dir()函数使用指南
2015/05/08 PHP
php算法实例分享
2015/07/14 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
浅谈php的TS和NTS的区别
2019/03/13 PHP
用js实现键盘方向键翻页功能的代码
2007/06/03 Javascript
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
2010/01/15 Javascript
统计jQuery中各字符串出现次数的工具
2012/05/03 Javascript
javascript之typeof、instanceof操作符使用探讨
2013/05/19 Javascript
jquery.cookie() 方法的使用(读取、写入、删除)
2013/12/05 Javascript
js实现超酷的照片墙展示效果图附源码下载
2015/10/08 Javascript
jquery trigger函数执行两次的解决方法
2016/02/29 Javascript
Angular学习笔记之angular的$filter服务浅析
2016/11/12 Javascript
BootStrap的两种模态框方式
2017/05/10 Javascript
动态加载JavaScript文件的3种方式
2018/05/05 Javascript
工作中常用到的ES6语法
2018/09/04 Javascript
微信小程序动画(Animation)的实现及执行步骤
2018/10/28 Javascript
Vue.extend 编程式插入组件的实现
2019/11/18 Javascript
JS继承实现方法及优缺点详解
2020/09/02 Javascript
Antd的Table组件嵌套Table以及选择框联动操作
2020/10/24 Javascript
[01:09:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第一场 6.2
2018/06/04 DOTA
实例讲解python函数式编程
2014/06/09 Python
python开发简易版在线音乐播放器
2017/03/03 Python
Mac中Python 3环境下安装scrapy的方法教程
2017/10/26 Python
tensorflow: 查看 tensor详细数值方法
2018/06/13 Python
Python 实现取矩阵的部分列,保存为一个新的矩阵方法
2018/11/14 Python
Python使用线程来接收串口数据的示例
2019/07/02 Python
解决Python import docx出错DLL load failed的问题
2020/02/13 Python
python 中不同包 类 方法 之间的调用详解
2020/03/09 Python
预订从美国飞往印度的机票:MyTicketsToIndia
2017/05/19 全球购物
小学生班会演讲稿
2014/01/09 职场文书
水电工岗位职责
2014/02/12 职场文书
《母亲的恩情》教学反思
2014/02/13 职场文书
幼儿园中班教师个人总结
2015/02/05 职场文书
运动会加油稿30字
2015/07/21 职场文书
微软Win11什么功能最惊艳? Windows11新功能特性汇总
2021/11/21 数码科技
css实现左上角飘带效果的完整代码
2022/03/18 HTML / CSS