短链接生成
短链接 大致思路是定义一个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