短链接生成核心是通过自增ID的62进制转换生成短码,并在数据库中映射长链接。使用PHP将唯一ID转为短字符串(如12345→"3d7"),存储至带唯一索引的表中,查询时通过短码快速定位原链接并301跳转,结合缓存与防刷机制优化性能与安全。

短链接的生成核心在于将长网址转换为简短、易记的字符串,并通过数据库映射实现跳转。PHP 实现这一功能主要包含两个部分:短链算法设计与数据库映射机制。
常用的短链算法是将唯一ID进行进制转换,生成短字符串。通常使用 62 进制(0-9, a-z, A-Z)来缩短长度。
步骤如下:
function idToShort($id) {
$chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$base = strlen($chars);
$short = '';
while ($id > 0) {
$short = $chars[$id % $base] . $short;
$id = intval($id / $base);
}
return $short ?: '0';
}
// 示例:ID 为 12345,生成短码 "3d7"
echo idToShort(12345); // 输出类似结果
短链系统依赖数据库存储原始 URL 与短码之间的对应关系。表结构应简洁高效,支持快速查询和去重。
立即学习“PHP免费学习笔记(深入)”;
推荐表结构:
CREATE TABLE short_links (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
long_url TEXT NOT NULL,
short_code CHAR(8) NOT NULL UNIQUE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
INDEX idx_short_code (short_code),
INDEX idx_long_url (long_url(255))
);
说明:
用户提交长链接时,系统执行以下逻辑:
跳转时,通过 $_GET['code'] 获取 short_code,查询 long_url 并执行 301 跳转。
跳转示例:
$code = $_GET['code'] ?? '';
if (!preg_match('/^[a-zA-Z0-9]{1,10}$/', $code)) {
http_response_code(400);
exit('Invalid code');
}
// 查询数据库
$stmt = $pdo->prepare("SELECT long_url FROM short_links WHERE short_code = ?");
$stmt->execute([$code]);
$row = $stmt->fetch();
if ($row) {
header('Location: ' . $row['long_url'], true, 301);
} else {
http_response_code(404);
echo 'Link not found';
}
以上就是php如何生成短链接地址_php短链生成算法与数据库映射设计的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号