当前位置:实例文章 » PHP实例» [文章]PHP实现短链功能

PHP实现短链功能

发布人:shili8 发布时间:2023-01-30 14:14 阅读次数:34

function shortUrl($url)
{
    $charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    $key = 'WOOD-HEAD'; //加盐
    $urlHash = md5($key . $url);
    $len = strlen($urlHash);

    //将加密后的串分成4段,每段4字节,对每段进行计算,一共可以生成四组短连接
    $shortUrlList = [];
    for ($i = 0; $i < 4; $i++) {
        $urlHashPiece = substr($urlHash, $i * $len / 4, $len / 4);
        //将分段的位与0x3fffffff做位与,0x3fffffff表示二进制数的30个1,即30位以后的加密串都归零
        //此处需要用到hexdec()将16进制字符串转为10进制数值型,否则运算会不正常
        $hex = hexdec($urlHashPiece) & 0x3fffffff;
        //域名根据需求填写
        $shortUrl = '';
        //生成6位短网址
        for ($j = 0; $j < 6; $j++) {
            //将得到的值与0x0000003d,3d为61,即charset的坐标最大值
            $shortUrl .= $charset[$hex & 0x0000003d];
            //循环完以后将hex右移5位
            $hex = $hex >> 5;
        }
        $shortUrlList[] = $shortUrl;
    }
    return $shortUrlList;
}

$input = 'https://betheme.net/houduan/693900.html?action=onClick';//长链
$output =shortUrl($input);


结果: array(4) {
[0]=>
string(6) “irrvLC”
[1]=>
string(6) “aPq9OS”
[2]=>
string(6) “u9qbX1”
[3]=>
string(6) “vfrLC0”
}
取任意一个值或是全部都存,让单个短链都对应上面的长链,存数据库,将短链返回个客户端。
用户端通过携带该短链参数,去数据库中查找长链,并访问,这样就实现短链跳转长链接了。

相关标签:

免责声明

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱290110527@qq.com删除。

其他信息

其他资源

Top