gpt4 book ai didi

php - Youtube URL 样式哈希

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:57:17 26 4
gpt4 key购买 nike

我正在尝试找出如何构建像 youtube url 中使用的那种漂亮而短的字母数字散列。

示例:http://www.youtube.com/watch?v=rw71YOSXhpE

其中 rw71YOSXhpE 将转换为视频编号 12834233(例如)。

这些整数可以在 PHP 中反转为整数,然后在数据库中查找。

我在 PHP 中运行了以下命令:

<?
$algoList = hash_algos( );

foreach( $algoList as $algoName )
{
echo $algoName . ": " . hash( $algoName, 357892345234 ) . "\n";
}
?>

但是他们中没有一个会带着超出您预期的 a-f 的字符返回。 Youtube 有大写和小写的整个英文字母表。知道他们是怎么做到的吗?

最佳答案

您想将整数转换为不同的基数,即使用完整字母表的基数。 Base64 可以工作,但你会得到比原始整数更长的字符串,因为 base64_encode() 函数接受一个字符串,而不是一个整数。

我的建议是像这样使用 base_convert() 函数:

$id = 12834233;
$hash = base_convert($id, 10, 36);

反之

$hash = '7n2yh'
$id = base_convert($hash, 36, 10);

然而,这只会使用小写字母 a-z 和 0-9。如果您希望使用所有大写和小写字母,则需要转换为 base 62(如果您使用符号,则转换为更高)。然而,要做到这一点,您必须编写自己的代码。

编辑:戈登指出了这个great link到 php 中的 base62 编码。

关于php - Youtube URL 样式哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2237178/

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