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 split()函数的用法详解
Jun 05 PHP
PHP 关于访问控制的和运算符优先级介绍
Jul 08 PHP
PHP中error_log()函数的使用方法
Jan 20 PHP
php提交post数组参数实例分析
Dec 17 PHP
PHP Cookei记录用户历史浏览信息的代码
Feb 03 PHP
PHP中PDO的事务处理分析
Apr 07 PHP
PHP中的多种加密技术及代码示例解析
Oct 20 PHP
CI框架无限级分类+递归的实现代码
Nov 01 PHP
PHP chop()函数讲解
Feb 11 PHP
PHP安装memcache扩展的步骤讲解
Feb 14 PHP
PHP正则表达式函数preg_replace用法实例分析
Jun 04 PHP
Laravel相关的一些故障解决
Aug 19 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
php7函数,声明,返回值等新特性介绍
2018/05/25 PHP
JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结
2010/04/13 Javascript
js的一些常用方法小结
2011/06/29 Javascript
JavaScript的Module模式编程深入分析
2013/08/13 Javascript
js中opener与parent的区别详细解析
2014/01/14 Javascript
javascript学习笔记(六)数据类型和JSON格式
2014/10/08 Javascript
基于jquery实现的自动补全功能
2015/03/12 Javascript
jQuery实现的文字hover颜色渐变效果实例
2016/02/20 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
2016/12/02 Javascript
详解vue表单验证组件 v-verify-plugin
2017/04/19 Javascript
JS SetInterval 代码实现页面轮询
2017/08/11 Javascript
javascript中join方法实例讲解
2019/02/21 Javascript
微信小程序可滑动周日历组件使用详解
2019/10/21 Javascript
[01:44]《为梦想出发》—联想杯DOTA2完美世界全国高校联赛
2015/09/30 DOTA
python去除所有html标签的方法
2015/05/05 Python
使用Python编写简单的画图板程序的示例教程
2015/12/08 Python
python使用matplotlib绘图时图例显示问题的解决
2017/04/27 Python
Python调用C# Com dll组件实战教程
2017/10/12 Python
python使用tornado实现简单爬虫
2018/07/28 Python
python 用下标截取字符串的实例
2018/12/25 Python
python遍历小写英文字母的方法
2019/01/02 Python
Python3.4解释器用法简单示例
2019/03/22 Python
python操作日志的封装方法(两种方法)
2019/05/23 Python
Python安装第三方库攻略(pip和Anaconda)
2020/10/15 Python
AmazeUI图片轮播效果的示例代码
2020/08/20 HTML / CSS
美的官方商城:Midea
2016/09/14 全球购物
AVI-8手表美国官方商店:AVI-8 USA
2019/04/10 全球购物
浙大网新C/C++面试解惑
2015/05/27 面试题
存储过程和函数的区别
2013/05/28 面试题
超市后勤自我鉴定
2014/01/17 职场文书
高中学生期末评语
2014/04/25 职场文书
2019广播稿怎么写
2019/04/17 职场文书
90条交通安全宣传标语
2019/10/12 职场文书
Golang全局变量加锁的问题解决
2021/05/08 Golang
Android Studio实现简易进制转换计算器
2022/05/20 Java/Android
利用nginx搭建RTMP视频点播、直播、HLS服务器
2022/05/25 Servers