`

PHP实现URL长连接生成短链接操作

    博客分类:
  • PHP
阅读更多

PS:原创文章,如需转载,请注明出处,谢谢!     

本文地址:http://flyer0126.iteye.com/blog/1591848

 

     短链接,通俗来说,就是将长的URL 网址,通过程序计算等方式,转换为简短的网址字符串。

     这样的话其好处为:1、内容需要;2、用户友好;3、便于管理。

     早期短链接广泛应用于图片上传网站,通过缩短网址URL链接字数,达到减少代码字符串的目的。更便于使用者引用网址,写入代码中,“节省”字符数空间。常见于网店图片分类的使用,因有字符限制,运用短链接,达到外链图片的目的。自微博盛行以来,在微博字数有限的特色下,短链接也盛行于微博网站,以节省字数,给博主发布更多文字的空间。

 

<?php
/**
 * 由长连接生成短链接操作
 * 
 * 算法描述:使用6个字符来表示短链接,我们使用ASCII字符中的'a'-'z','0'-'9','A'-'Z',共计62个字符做为集合。
 * 		     每个字符有62种状态,六个字符就可以表示62^6(56800235584),那么如何得到这六个字符,
 *           具体描述如下:
 *		  1. 对传入的长URL+设置key值 进行Md5,得到一个32位的字符串(32 字符十六进制数),即16的32次方;
 *        2. 将这32位分成四份,每一份8个字符,将其视作16进制串与0x3fffffff(30位1)与操作, 即超过30位的忽略处理;
 *		  3. 这30位分成6段, 每5个一组,算出其整数值,然后映射到我们准备的62个字符中, 依次进行获得一个6位的短链接地址。
 *
 * @author flyer0126
 * @since 2012/07/13
 */
function shortUrl( $long_url )
{
    $key = 'flyer0126';
    $base32 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    
    // 利用md5算法方式生成hash值
    $hex = hash('md5', $long_url.$key);
    $hexLen = strlen($hex);
    $subHexLen = $hexLen / 8;
    
    $output = array();
    for( $i = 0; $i < $subHexLen; $i++ )
    {
    	// 将这32位分成四份,每一份8个字符,将其视作16进制串与0x3fffffff(30位1)与操作
    	$subHex = substr($hex, $i*8, 8);
    	$idx = 0x3FFFFFFF & (1 * ('0x' . $subHex));
    	
    	// 这30位分成6段, 每5个一组,算出其整数值,然后映射到我们准备的62个字符
    	$out = '';
    	for( $j = 0; $j < 6; $j++ )
    	{
    		$val = 0x0000003D & $idx;
    		$out .= $base32[$val];
    		$idx = $idx >> 5;
    	}
    	$output[$i] = $out;
    }
    
    return $output;
}
  
$url = 'http://flyer0126.iteye.com/';
$ret = shortUrl($url);
var_dump($ret);


################ 打印结果 ################
/* array(4) {
	[0]=>
	string(6) "2aEzqe"
	[1]=>
	string(6) "Rj6Bve"
	[2]=>
	string(6) "f2mQvi"
	[3]=>
	string(6) "z2eqYv"
} */
#将url与短链接结果存入数据库,取其中一个用于显示即可。  例:新浪微博:http://t.vn/2aEzqe
 

 

分享到:
评论
2 楼 hkshadow 2013-04-26  
http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2012/0606/10506.html
1 楼 wuliaolll 2013-04-10  
这个你能保证是唯一的吗,这好像是生成了四个地址,到底用哪个呢,用第一个?这重复的情况很多吧。按你这样的话,没必要大废周折去移位去与,直接取md5码的一段就可以了吧。

相关推荐

    全新PHP短网址生成系统,短链接生成系统,URL缩短器系统源码

    全新PHP短网址生成系统,短链接生成系统,URL缩短器系统源码

    PHP长网址与短网址的实现方法

    长链接可以生成短链接,短链接来源于长链接。 什么是长链接、短链接 顾名思义,长链接就是一个很长的链接;短链接就是一个很短的链接。长链接可以生成短链接,短链接来源于长链接。 为什么要使用长链接、短链接 更加...

    百度短网址在线生成系统 v1.0.zip

    短网址服务可以帮助你把一个长网址缩短,方便你在社交网络和微博上分享链接。 安装程序后输入你要缩短的原网址,生成对应的短网址。你还可以自定义你想要的短网址字符 。 程序功能:根据长网址生成短百度网址;也...

    百度短网址在线生成系统 v1.0

    短网址服务可以帮助你把一个长网址缩短,方便你在社交网络和微博上分享链接。 安装程序后输入你要缩短的原网址,生成对应的短网址。你还可以自定义你想要的短网址字符 。 程序功能:根据长网址生成短百度网址;也...

    PHP将URL转换成短网址的算法分享

    下面是用PHP实现短网址转换的算法,代码如下: PHP &lt;?php //短网址生成算法 class ShortUrl { //字符表 public static $charset = 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz; public ...

    UrlShorter v0.0.1.rar

    它可以把长长的URL地址转化成很短的地址,基于php mysql开发,速度快,对服务器压力很小,支持apache和nginx,采用 wordpress一致的rewrite规则,具体规则己经打包在下载安装包里面。 安装很简单,上传所有文件到...

    风越ASP代码生成器2.8

    欢迎使用《风越ASP代码生成器 [FireCode Creator]》 ================================================= 《风越ASP代码生成器 [FireCode Creator]》是一款采用.Net FrameWork2.0框架、基于多种数据库的程序代码...

    风越.Net代码生成器 [FireCode Creator] V1.3 精简版

    《风越.Net代码生成器 [FireCode Creator]》是一款采用.Net FrameWork2.0框架、基于多种数据库的程序代码生成软件,可快速建立数据信息的:添加、编辑、查看、列表、搜索功能。默认提供asp、aspx两种代码框架及多个...

    PHP程序开发范例宝典III

    让你短时间内由一名菜鸟到高手绝对没问题! 由于权限有限,分3部份下载 PHP程序开发范例宝典 内容提要 《PHP程序开发范例宝典》全面介绍了应用PHP进行网站开发的各种技术和技巧。《PHP程序开发范例宝典》分为20章...

    风越ASP代码生成器FireAspCreatorv2.9.rar

    《风越代码生成器 [FireCode Creator]》是一款采用.Net FrameWork2.0框架,基于多种数据库的程序代码生成软件,可快速建立数据信息的:添加、编辑、查看、列表、搜索页面。通过界面模板与代码模板管理功能,可自定义...

    UrlShorter网址缩短系统 0.0.1.zip

    它可以把长长的URL地址转化成很短的地址,基于php mysql开发,速度快,对服务器压力很小,支持apache和nginx,采用 wordpress一致的rewrite规则,具体规则己经打包在下载安装包里面。 安装很简单,上传所有文件到...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例054 包含数据库连接文件 85 实例055 包含网站头文件 86 实例056 包含网站尾文件 87 实例057 包含网站的主文件 88 2.4 条件语句 89 实例058 员工生日提醒 89 实例059 考试成绩评定标准 90 实例060 控制登录用户...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例054 包含数据库连接文件 85 实例055 包含网站头文件 86 实例056 包含网站尾文件 87 实例057 包含网站的主文件 88 2.4 条件语句 89 实例058 员工生日提醒 89 实例059 考试成绩评定标准 90 实例060 控制登录用户...

    风越.net代码生成器v2.9

    《风越代码生成器 [FireCode Creator]》是一款采用.Net FrameWork2.0框架、基于多种数据库的程序代码生成软件,可快速建立数据信息的:添加、编辑、查看、列表、搜索功能。默认提供asp、aspx WEB程序、.net普通三层...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    传统上网页的交互作用是通过CGI来实现的。CGI程序的伸缩性不很理想,因为它为每一个正在运行的CGI程序开一个独立进程。解决方法就是将经常用来编写CGI程序的语言的解释器编译进你的web服务器(比如mod_perl,JSP)。PHP...

    PHPEIP-CMS 网站内容管理系统 v1.0 PHP.rar

    可以嵌套和交叉使用,随用随调,没有传模板标签的限制灵活的URL,可支持动态链接、PHPINFO链接、伪静态以及HTML静态化(各栏目可定义生成静态页面jpg、gif、png、bmp图片自动加水印(水印图片及位置可设置)便捷的...

    PHP4.0 高级篇

    2.7.1 动态函数生成程序 63 2.7.2 自变计数器 67 2.8 小结 68 第3章 应用程序设计:一个实际的例子 69 3.1 项目概观 69 3.2 比较技术环节 70 3.3 IRC网络基础 73 3.4 使应用程序适用于网络 75 3.5 连接网络的接口 76...

    PHPWeb开发技术指南——pdf格式

    2.7.1 动态函数生成程序 63 2.7.2 自变计数器 67 2.8 小结 68 第3章 应用程序设计:一个实际的例子 69 3.1 项目概观 69 3.2 比较技术环节 70 3.3 IRC网络基础 73 3.4 使应用程序适用于网络 75 3.5 连接网络的接口 76...

    PHP3程序设计

    14.3 通过连接生成虚拟表 218 14.4 使用链接表 219 14.5 几种连接类型 222 14.5.1 左连接 222 14.5.2 正则左连接 223 14.5.3 Using选项 223 14.6 处理空值 224 14.7 完整性 225 14.8 总结 226 第15章 中场四:管理...

Global site tag (gtag.js) - Google Analytics