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 相关文章推荐
1.PHP简介
Oct 09 PHP
Discuz 模板语句分析及知识技巧
Aug 21 PHP
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
Jul 03 PHP
如何使用PHP计算上一个月的今天
May 23 PHP
php实现分页工具类分享
Jan 09 PHP
CI框架安全类Security.php源码分析
Nov 04 PHP
从wamp到xampp的升级之路
Apr 08 PHP
jquery+thinkphp实现跨域抓取数据的方法
Oct 15 PHP
yii2项目实战之restful api授权验证详解
May 20 PHP
Laravel框架中自定义模板指令总结
Dec 17 PHP
如何在centos8自定义目录安装php7.3
Nov 28 PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
Feb 07 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 object转数组示例
2014/01/15 PHP
使用PHP备份MYSQL数据的多种方法
2014/01/15 PHP
完整删除ecshop中获取店铺信息的API
2014/12/24 PHP
完美解决Thinkphp3.2中插入相同数据的问题
2017/08/01 PHP
CI框架(CodeIgniter)公共模型类定义与用法示例
2017/08/10 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
2019/10/23 PHP
个人总结的一些关于String、Function、Array的属性和用法
2007/01/10 Javascript
跟着Jquery API学Jquery之一 选择器
2010/04/07 Javascript
javascript计算星座属相(十二生肖属相)示例代码
2014/01/09 Javascript
鼠标滑过出现预览的大图提示效果
2014/02/26 Javascript
jquery1.10给新增元素绑定事件的方法
2014/03/06 Javascript
js遍历子节点子元素附属性及方法
2014/08/19 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
jQuery+CSS3+Html5实现弹出层效果实例代码(附源码下载)
2016/05/16 Javascript
移动端 一个简单易懂的弹出框
2016/07/06 Javascript
微信小程序跨页面传递data数据方法解析
2019/12/13 Javascript
vue-cli3中配置alias和打包加hash值操作
2020/09/04 Javascript
[10:28]2018DOTA2国际邀请赛寻真——VGJ.S寻梦之路
2018/08/15 DOTA
[01:21]DOTA2 新英雄 森海飞霞
2020/12/18 DOTA
跟老齐学Python之私有函数和专有方法
2014/10/24 Python
Django框架下在URLconf中指定视图缓存的方法
2015/07/23 Python
Python 列表理解及使用方法
2017/10/27 Python
Python2.7环境Flask框架安装简明教程【已测试】
2018/07/13 Python
CentOS 7 安装python3.7.1的方法及注意事项
2018/11/01 Python
详解解决Python memory error的问题(四种解决方案)
2019/08/08 Python
python判断两个序列的成员是否一样的实例代码
2020/03/01 Python
建筑设计专业求职自我评价
2014/03/02 职场文书
市场部经理岗位职责
2014/04/10 职场文书
艾滋病宣传标语
2014/06/25 职场文书
党员四风剖析材料
2014/08/27 职场文书
2014年英语教学工作总结
2014/12/17 职场文书
面试通知短信
2015/04/20 职场文书
董事会决议范本
2015/07/01 职场文书
Vue全家桶入门基础教程
2021/05/14 Vue.js
Mysql事务索引知识汇总
2022/03/17 MySQL
Tomcat安装使用及部署Web项目的3种方法汇总
2022/08/14 Servers