永不重复短网址算法

思路: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

 

 

你可能感兴趣的:(php学习笔记)