- 前言
 
随着互联网技术的发展,越来越多的网站采用短链接,将长网址转化为短链接,方便用户使用,并且会提高网站的安全性和速度。本文将介绍采用php实现的短网址算法。
- 基本原理
 
短网址的实现流程是:将长网址转化为短网址,用户点击短网址时将短网址还原成长网址,实现原理如下:
- 将长网址进行MD5加密得到一个32位的字符串,然后将这个字符串分成4份,每份8个字节,转换成16进制数,得到4个4位的字符串。
 - 从这个16进制数割出12个部分,每部分5位,再将其转换成10进制数,得到12个数字。
 - 将这12个数字处理成短网址中的字符。
 
短网址中字符有62个(a-z、A-Z、0-9),因此在将数字转换成62进制字符时,需要将12位的数字拆成6组,每组2位,以a-z、A-Z、0-9的顺序逐个选取一个字符,这样就得到了6个字符,作为短网址的一部分。最后将6个字符拼接起来,作为短网址输出。
- 代码实现
 
下面采用php语言实现短网址算法。代码分为两个部分:长网址转化为短网址的函数和短网址还原成长网址的函数。
3.1 长网址转化为短网址
<?php
function shorturl($url)
{
    // 要进行处理的网址
    $url = md5($url);
    $url_short = array();
    $url_len = strlen($url);
    for ($i = 0; $i < 4; $i++) {
        $sub_str = substr($url, $i * 8, 8);
        $url_short[$i] = 0x3FFFFFFF & (1 * hexdec($sub_str));
    }
    $result = array();
    for ($i = 0; $i < 6; $i++) {
        $index = 0x0000003D & $url_short[$i];
        $result[] = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'[$index];
    }
    return implode('', $result);
}
?>
该函数的参数为长网址,返回值为短网址。
3.2 短网址还原为长网址
<?php
function longurl($url_short)
{
    $url_short = str_split($url_short);
    $url_len = count($url_short);
    $url = array();
    for ($i = 0; $i < $url_len; $i++) {
        if ($url_short[$i] >= '0' && $url_short[$i] <= '9') {
            $url[] = ord($url_short[$i]) - 48;
        } else if ($url_short[$i] >= 'a' && $url_short[$i] <= 'z') {
            $url[] = ord($url_short[$i]) - 87;
        } else if ($url_short[$i] >= 'A' && $url_short[$i] <= 'Z') {
            $url[] = ord($url_short[$i]) - 29;
        } else {
            return false;
        }
    }
    $num10 = $url[0] * 56800235584 + $url[1] * 916132832 + $url[2] * 14776336 + $url[3] * 238328 + $url[4] * 3844 + $url[5] * 62;
    $result = sprintf("%u", $num10);
    $md5 = substr(md5($result), 0, 8);
    $result = 'http://www.domain.com/' . $md5;
    return $result;
}
?>
该函数的参数为短网址,返回值为长网址。
- 示例说明
 
使用本文提供的php代码,可以将任意长的网址转化为6位的短网址,如下:
<?php
    $long_url = 'http://www.domain.com/longlonglonglonglonglong';
    $short_url = shorturl($long_url);
    // 返回的值为 x2km8M
?>
还原短网址为长网址的过程如下:
<?php
    $short_url = 'x2km8M';
    $long_url = longurl($short_url);
    // 返回的值为 http://www.domain.com/longlonglonglonglonglong
?>
- 总结
 
以上是采用php实现的短网址算法分享。在短网址生成和还原的过程中,需要注意url_short数组的处理,以及其中数字的转换。
The End




大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)