我正在寻找一个 PHP 函数,它可以从字符串或文件中创建一个简短的哈希,类似于那些 URL 缩短网站,如 tinyurl.com
哈希不应超过 8 个字符。
最佳答案
TinyURL 不散列任何内容,它使用 Base 36 整数(甚至是 base 62,使用大小写字母)来指示要访问的记录。
基数 36 到整数:
intval($str, 36);
以 36 为底的整数:
base_convert($val, 10, 36);
那么,不是重定向到像 /url/1234
这样的路由,而是变成 /url/ax
。这比散列提供了更多的用途,因为不会发生冲突。有了这个,您可以轻松检查 url 是否存在并返回正确的、现有的、以 base 36 为基础的 ID,而用户不知道它已经在数据库中。
不要散列,对这类事情使用其他基础。 (它更快,并且可以防碰撞。)
关于PHP 短哈希,如 URL 缩短网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/959957/