每个网址用6个字符代替,(6^32) 最多可以拥有1,073,741,824个短网址。
当然,你还可以记录更详细的信息,如访问记录,创建时间等。
如果真不够用了,还可以删掉很久不用的。
复制代码 代码如下:
function shorturl($input) {
$base32 = array (
"a", "b", "c", "d", "e", "f", "g", "h",
"i", "j", "k", "l", "m", "n", "o", "p",
"q", "r", "s", "t", "u", "v", "w", "x",
"y", "z", "0", "1", "2", "3", "4", "5"
);
$hex = md5($input);
$hexLen = strlen($hex);
$subHexLen = $hexLen / 8;
$output = array();
for ($i = 0; $i < $subHexLen; $i++) {
$subHex = substr ($hex, $i * 8, 8);
$int = 0x3FFFFFFF & (1 * ("0x".$subHex));
$out = "";
for ($j = 0; $j < 6; $j++) {
$val = 0x0000001F & $int;
$out .= $base32[$val];
$int = $int >> 5;
}
$output[] = $out;
}
return $output;
}
测试代码:
复制代码 代码如下:
$input = "//www.yinxi.net/1";
$output = shorturl($input);
echo "Input : $input
";
echo "Output : {$output[0]}
";
echo " {$output[1]}
";
echo " {$output[2]}
";
echo " {$output[3]}
";
echo "
";
$input = "//www.yinxi.net/2";
$output = shorturl($input);
echo "Input : $input
";
echo "Output : {$output[0]}
";
echo " {$output[1]}
";
echo " {$output[2]}
";
echo " {$output[3]}
";
echo "
";
输出:
复制代码 代码如下:
Input : //www.yinxi.net/1
Output : h0xg4r
bdr3tw
osk2d3
4azfqa
Input : //www.yinxi.net/2
Output : tm5kxb
ceoj2s
yw3dvl
nrmrxl