短链接生成

作者: JONE 分类: PHPer 发布时间: 2020-02-28 19:57

短链接 大致思路是定义一个URL映射算法,将长的URL映射到短的URL,使用数据库或缓存文件存储映射关系,实现映射算法。其中关键部分在于映射算法,映射算法如下。

function shorturl($url) {

    $x = sprintf('%u', crc32($url));
    $str = '';

    while($x > 0) {

        $s = $x % 62;   // 取余,则 $s 必定会小于 62

        if($s > 35) {   // 那么  35<$s <62
             $s = chr($s + 61);  // 取 ASCII 编码 a-z 字母
        } elseif ($s > 9 && $s <= 35) {   //  9<$s<=35
             $s = chr($s + 55);  // 取 ASCII 编码 A-Z 字母
        }
        // 0<=$<=9 则不需要取ASCII编码值
        $str .= $s;
$x = floor($x/62); // 对 $x 取整 重新进入循环 } return $str; }

使用crc32可能会出现值相同的结果,

$a = crc32("c294f5b1"); 

$b = crc32("fc26498f"); 

printf("%u\n",$a); 

printf("%u\n",$b);

// 打印结果
// 1234567890
// 1234567890