`

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缩短器系统源码

    短网址生成系统,顾名思义,是一种能够将长URL转化为短链接的服务。它主要通过哈希算法或自增ID结合编码方式来实现。在这个系统中,我们使用的编程语言是PHP,这是一种广泛应用的开源脚本语言,特别适合于Web开发。 ...

    黑色简洁的PHP短网址短链接生成源码.rar

    黑色简洁的PHP短网址短链接生成源码 可在后台添加广告 前端: 简洁、优雅、反应灵敏的设计 创建URL、创建自定义URL、密码保护的链接、链接统计、暗色主题、小书签、复制和共享链接 后端: 删除网址、编辑网站设置...

    在线生成防红短链接php源码

    综上所述,这个"在线生成防红短链接PHP源码"涉及到多个IT知识点,包括PHP编程、URL重写、数据库操作、安全防护以及网站部署和优化。对于想要学习或实践Web开发的人来说,这是一个有价值的项目。

    php二维码生成器国外版 网页生成器php源码 缩短链接网站源码.zip

    缩短链接服务则是将长URL转化为短链接的服务,通常用于社交媒体分享、邮件营销等领域,因为长链接可能会导致排版问题或者看起来不专业。PHP可以轻松实现这个功能,通过创建一个映射系统,将长链接与短码关联起来,当...

    Dzi 短网址生成 URL缩短器 国外高级版源码

    短地址生成涉及到的技术包括URL编码、哈希算法、数据库操作以及用户界面设计。在实际应用中,通常会用到如Base62编码来将数字和字母组合成短链接,以及哈希函数(如MD5或SHA系列)来确保长网址与短网址之间的唯一...

    PHP生成WORD文件,带连接

    在`word.php`文件中,很可能包含了类似这样的代码,展示了如何实际操作并生成Word文件。而`test.php`可能是一个测试脚本,用于调用和展示`word.php`的功能。 除了PHPWord,还有Spout库,它更适合处理大型文件,因为...

    基于PHP的微信域名防封短网址程序.zip

    综上所述,基于PHP的微信域名防封短网址程序是一个综合了URL处理、网络通信、数据库操作和安全防护的综合性项目。通过巧妙的设计和实现,它能够在微信环境中提供稳定、安全的短链服务,有效规避微信的封禁风险,助力...

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

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

    全新PHP网址缩短防封短网址生成系统源码内附安装说明

    1. **短网址生成算法**:系统可能采用了某种哈希或编码算法,如Base62或URL-safe Base64,将原始的长网址转换为简短的、可读性强的短网址,同时确保每个长网址对应唯一的短网址。 2. **用户注册与域名绑定**:注册...

    基于PHP的短网址urlShort源码.zip

    PHP通过PDO(PHP Data Objects)或MySQLi扩展来连接和操作数据库,如保存长URL、查找对应的短URL等。 4. **路由与重定向**:当用户访问短链接时,服务器需要解析这个短码并将其重定向到原始的长URL。这涉及到HTTP...

    基于PHP的短链接系统.zip

    通过`index.php`,用户可以输入长链接生成短链接,后台使用PHP处理请求,存储长链接到数据库,并返回对应的短链接。短链接被点击后,系统通过查询数据库找到原URL并重定向用户。 此外,系统可能还包括用户注册、...

    PHP实例开发源码-php启科短网址程序.zip

    在短网址程序中,PHP主要负责后台逻辑处理,包括接收原始长网址,生成短链接,以及解析短链接回原始长网址。 1. **URL编码与解码**:在处理URL时,PHP提供了`urlencode()`和`urldecode()`函数,用于对URL进行编码和...

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

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

    百度API生成短链代码

    因此,将长链接转换为短链接的需求应运而生。百度提供的短链服务API允许开发者通过简单的接口调用将长链接转换成更简短的形式,便于分享和传播。 #### 二、核心功能实现 ##### 1. 关键概念 - **长链接**:原始的、...

    源码分享开源短链接生成源码.zip

    使用方法: 修改config.php文件 访问:域名/install.php即可 查看用户使用记录:域名/admin.php 密码默认是123456,是在你设置config.php时填写的 原项目地址https://gitee.com/jsy-1/short-url

    基于PHP的短链接系统源码.zip

    【描述】"基于PHP的短链接系统源码.zip" 暗示了这个项目是一个用PHP实现的开源解决方案,可能包含了数据库交互、URL编码与解码、自定义短码生成、统计分析等功能。用户下载此压缩包后,可以研究源代码,学习PHP编程...

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

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

    管理系统系列--PHP写的轻量级短链接系统(不包含后台管理).zip

    4. **数据库交互**:用于存储原始长URL和对应的短链接,可能有数据库连接和查询脚本。 5. **URL重定向**:当用户访问短链接时,系统会根据数据库中的映射关系重定向到原始长URL。 6. **配置文件**:如config.php,...

    php短网址urlShortv2.0.0

    在这个项目中,PHP是实现短网址服务的主要后端语言,负责处理请求、查询数据库和生成短网址。 MySQL是关系型数据库管理系统,用于存储和管理短网址与其对应的原始长网址。在这个系统中,它可能包含两个主要的表格:...

Global site tag (gtag.js) - Google Analytics