首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 生成短網址演算法原理與實現

     編輯:PHP 綜合知識

核心演算法流程

  1. 對原網址計算 crc32 校驗碼
  2. sprintf('%u') 轉為無符號整數
  3. 對 62 取模 (0-9, A-Z, a-z 共 62 字符),餘數映射字符
  4. 商繼續除以 62,直到商為 0
  5. 反轉字符序列得到短碼

字符映射表

餘數範圍映射字符
0-90-9
10-35A-Z
36-61a-z

實現代碼

<?php
function dwz($url) {
    $code = floatval(sprintf('%u', crc32($url)));
    $surl = '';
    while ($code) {
        $mod = fmod($code, 62);
        if ($mod > 9 && $mod <= 35) {
            $mod = chr($mod + 55);      // A-Z
        } elseif ($mod > 35) {
            $mod = chr($mod + 61);      // a-z
        }
        $surl .= $mod;
        $code = floor($code / 62);
    }
    return $surl;
}

// 測試
echo dwz('https://blog.csdn.net/fdipzone'); // rs5U24
?>

注意事項

  • crc32 碰撞概率較高,生產環境建議用 md5 / sha256 + Base62 編碼
  • 短碼長度不固定,可配合資料庫自增 ID 保證唯一性
  • 大流量系統需考慮分佈式 ID 生成策略 (Snowflake 等)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved