我正在开发一个网站,要求人们在网址后输入用户的ID以进入他们需要的网页。例如。 www.mysite.com/235163其中235163是配置文件的ID号。但是有没有办法通过在ID号码中引入字母数字字符来缩短数字,所以235163可以缩短为1d或者很长的线条显然,我只是想尽量减少用户输入长号码的错误。有人可以帮忙吗?
答案 0 :(得分:2)
首先要考虑的是使用dechex()将十进制转换为十六进制,因此在这种情况下235163将变为3969b,显然很容易使用hexdec()转换回id
echo hexdec(235163); // 3969b
echo dechex('3969b') // 235163
或者你可以使用base_convert()转换为base 36,给出:
echo base_convert(235163, 10, 36); // 51gb
echo base_convert('51gb', 36, 10); // 235163
答案 1 :(得分:1)
我最近遇到了类似的挑战;我的解决方案是将base-10数字(十进制)转换为base-64。 Base-64使用其他字符(A-Z,a-z等)来表示数字;这有效地减少了表示数字所需的字符数。然后可以在URL中使用这个“缩短的数字”。
对于PHP,Paul Greg created some code处理从base-10到另一个base的转换。我还在我的个人博客上发表了关于converting row ID's to Base-64 for short url's的博文。但是,我的代码使用C#;如果你对使用这种方法感兴趣,那么使用Paul的代码为PHP重新创建它。
答案 2 :(得分:0)
您可以使用dechex($id)
。