PHP URL缩短算法

前端之家收集整理的这篇文章主要介绍了PHP URL缩短算法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有人可以推荐一个首选的算法来使用URL缩短吗?我正在使用 PHP进行编码.最初我考虑写一些从一个字符开始的东西,例如“a”,并遍历请求,在数据库中创建记录,因此必须将字符增加到b,c,d … A,B等适当.

然而,对我来说,这个算法可能相当沉重/笨拙,可能会有更好的方法来做到这一点.

我在Google上阅读了一些,有些人似乎正在从数据库的ID列进行基本转换.这不是我太熟悉的东西.

有人可以详细说明一下这个工作吗?几个代码示例也是很棒的.

我显然不想要一个完整的解决方案,因为我想自己学习,但只是一个解释/伪代码,这将如何工作将是非常好的.

大多数缩短服务只是使用一个每个条目增加的计数器,并将基数从10转换为64.

PHP中的一个实现可能如下所示:

function encode($number) {
    return strtr(rtrim(base64_encode(pack('i',$number)),'='),'+/','-_');
}
function decode($base64) {
    $number = unpack('i',base64_decode(str_pad(strtr($base64,'-_','+/'),strlen($base64) % 4,'=')));
    return $number[1];
}

$number = mt_rand(0,PHP_INT_MAX);
var_dump(decode(encode($number)) === $number);

编码函数采用整数,将其转换为字节(pack),用Base-64编码(base64_encode)对其进行编码,修剪尾随填充=(rtrim),分别替换字符和/ by – 和_(strtr) ).解码功能是编码的逆函数,并且完全相反(除了添加尾部填充).

strtr的额外使用是将original Base-64 alphabet转换为URL and filename safe alphabet,并且/需要使用Percentage编码进行编码.

原文链接:https://www.f2er.com/php/131678.html

猜你在找的PHP相关文章