“小网址”网站如何获得如此微小的ID网址?
我的意思是:blabla.com/JH7
我怎么能得到这样的结果?像md5这样的功能,不会重复自我。 提前谢谢!
答案 0 :(得分:1)
short_url
和url
列的数据库表。a, example.com
。short_url
,b
,...,c
...)增加a1
。这基本上就是这些服务的运作方式。
答案 1 :(得分:1)
他们使用base36 encoding将整数转换为紧凑的字符串。
使用PHP:
<?php
$id = 18367;
$base36 = base_convert($id, 10, 36); // convert to base36 "e67"
$base10 = base_convert($base36, 36, 10); // "e67" back to base 10, $id
如deceze所述,base62也适用于为你提供a-zA-Z0-9的字符集,而不仅仅是像base36那样的a-z0-9。
答案 2 :(得分:1)
例如,您可以简单地通过字符串迭代:
php > $str = 'aaa';
php > $str++;
php > echo $str;
aab
另一个选项是准备函数,该函数将生成包含a-zA-Z0-9
的随机字符串,并在db中生成数百万个(因此您可以在需要时使用它们)或在循环中执行:
while( 1){
$rand = randomString();
if( isUnique( $rand)){
break;
}
}