在PHP中缩短整数id


Shorten integer IDs in PHP

我在一个网站上工作,要求人们在URL后输入用户的ID以进入他们需要的页面。例如www.mysite.com/235163,其中235163是配置文件的ID号。但是是否有一种方法可以通过将alpha数字字符引入ID号来缩短数字,因此235163可以缩短为1d或一些很长的行,显然,我只是想尽量减少用户输入长数字的错误。有人能帮忙吗?

首先想到的是使用dechex()将十进制转换为十六进制,因此在本例中235163将变成3969b,显然很容易使用hexdec()将其转换回id

echo hexdec(235163); // 3969b
echo dechex('3969b') // 235163

或者您可以使用base_convert()转换为进制36,得到:

echo base_convert(235163, 10, 36); // 51gb
echo base_convert('51gb', 36, 10); // 235163

我最近遇到了一个类似的挑战;我的解决方案是将以10为基数的数字(十进制)转换为以64为基数的数字。Base-64使用其他字符(A-Z, A-Z等)来表示数字;这有效地减少了表示数字所需的字符数量。这个"缩短的数字"可以在URL中使用。

对于PHP, Paul Greg创建了一些代码来处理从10进制到另一个进制的转换。我还在我的个人博客上写了关于将行ID转换为Base-64的简短url的博客。然而,我的代码使用c#;如果您对使用这种方法感兴趣,请使用Paul的代码为PHP重新创建此

您可以使用dechex($id)