思路:unix时间戳是不重复的,将Unix时间戳缩短为大小写字母的混用,既可以缩短。原理就是10进制转自定义的62进制。
将这个字符串和对应的长网址保存到数据库。
直接看代码吧
function base62($i){
if($i <0){
return false;
}
$ch = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$a = '';
do{
$a = $ch[$i%62].$a;
$i = intval($i/62);
}while($i>0);
return $a.$ch[rand(0,61)];
}
echo base62(time());
61 => 10
63 => 11
..
71 => 1a
72 => 1b
900000000(9亿) => YUj72