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 gbk环境下json_dencode传送来的汉字
Nov 13 PHP
深入php list()函数的详解
Jun 05 PHP
PHP引用(&amp;)各种使用方法实例详解
Mar 20 PHP
微信公众平台开发关注及取消关注事件的方法
Dec 23 PHP
php输入数据统一类实例
Feb 23 PHP
php实现在限定区域里自动调整字体大小的类实例
Apr 02 PHP
php计算整个目录大小的方法
Jun 19 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
Dec 11 PHP
php中file_get_contents()函数用法实例
Feb 21 PHP
php使用json-schema模块实现json校验示例
Sep 28 PHP
Yii框架布局文件的动态切换操作示例
Nov 11 PHP
php中配置文件保存修改操作 如config.php文件的读取修改等操作
May 12 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下连接ftp实现文件的上传、下载、删除文件实例代码
2010/06/03 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
2012/03/05 PHP
解析Linux下Varnish缓存的配置优化
2013/06/20 PHP
PHP中的gzcompress、gzdeflate、gzencode函数详解
2014/07/29 PHP
Drupal简体中文语言包安装教程
2014/09/27 PHP
golang 调用 php7详解及实例
2017/01/04 PHP
php 后端实现JWT认证方法示例
2018/09/04 PHP
JQuery入门—编写一个简单的JQuery应用案例
2013/01/03 Javascript
JSCode all of Brower 全局屏蔽网页右键功能 具体实现
2013/06/05 Javascript
jquery ajax修改全局变量示例代码
2013/11/08 Javascript
浅析IE10兼容性问题(frameset的cols属性)
2014/01/03 Javascript
jQuery如何实现点击页面获得当前点击元素的id或其他信息
2014/01/09 Javascript
js实现获取焦点后光标在字符串后
2014/09/17 Javascript
js面向对象之公有、私有、静态属性和方法详解
2015/04/17 Javascript
JS中作用域和变量提升(hoisting)的深入理解
2016/10/31 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
2017/02/22 Javascript
使用MUI框架模拟手机端的下拉刷新和上拉加载功能
2017/09/04 Javascript
原生JS实现 MUI导航栏透明渐变效果
2017/11/07 Javascript
详解JavaScript 中 if / if...else...替换方式
2018/07/15 Javascript
JavaScript使用ul中li标签实现删除效果
2019/04/15 Javascript
记录一次开发微信网页分享的步骤
2019/05/07 Javascript
微信域名检测接口调用演示步骤(含PHP、Python)
2019/12/08 Javascript
Python PyCharm如何进行断点调试
2019/07/05 Python
tensorflow入门:tfrecord 和tf.data.TFRecordDataset的使用
2020/01/20 Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
2020/02/15 Python
Python爬虫入门有哪些基础知识点
2020/06/02 Python
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
Jacadi Paris英国官网:法国童装品牌
2019/08/09 全球购物
俄罗斯电子产品在线商店:UltraTrade
2020/01/30 全球购物
工作时间上网检讨书
2014/02/03 职场文书
医学检验专业自荐信
2014/09/18 职场文书
十一国庆节“向国旗敬礼”主题班会活动方案
2014/09/27 职场文书
2014年审计工作总结
2014/11/17 职场文书
《艾尔登法环》Boss腐烂树灵很有可能是《黑暗之魂3》的一个废案
2022/04/11 其他游戏
以MySQL5.7为例了解一下执行计划
2022/04/13 MySQL
Win11 25163.1010更新补丁KB5016904推送,测试服务验证管道(附更新修复汇总)
2022/07/23 数码科技