gpt4 book ai didi

PHP URL 缩短算法

转载 作者:可可西里 更新时间:2023-10-31 22:41:51 25 4
gpt4 key购买 nike

谁能推荐一种用于缩短 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);

encode 函数接受一个整数,将其转换为字节 ( pack ),使用 Base-64 编码 ( base64_encode ) 对其进行编码,修剪尾部填充 = ( rtrim ), 并将字符 +/ 分别替换为 -_ (strtr)。 decode 函数是 encode 的逆函数,其作用完全相反(除了添加尾随填充)。

strtr 的额外用途是翻译 original Base-64 alphabetURL and filename safe alphabet因为 +/ 需要使用百分比编码。

关于PHP URL 缩短算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3514057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com