php实现的短网址算法分享

2025-05-29 0 32

每个网址用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 = 'https://www.zzvips.com/jishu/';
$output = shorturl($input);

echo "Input : $input\\n";
echo "Output : {$output[0]}\\n";
echo " {$output[1]}\\n";
echo " {$output[2]}\\n";
echo " {$output[3]}\\n";
echo "\\n";

$input = 'https://www.zzvips.com/bc/';
$output = shorturl($input);

echo "Input : $input\\n";
echo "Output : {$output[0]}\\n";
echo " {$output[1]}\\n";
echo " {$output[2]}\\n";
echo " {$output[3]}\\n";
echo "\\n";

输出:

复制代码 代码如下:


Input : https://www.zzvips.com/jishu/
Output : h0xg4r
bdr3tw
osk2d3
4azfqa

Input : https://www.zzvips.com/bc/
Output : tm5kxb
ceoj2s
yw3dvl
nrmrxl

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 php实现的短网址算法分享 https://www.kuaiidc.com/104484.html

相关文章

发表评论
暂无评论