短網址主要功能包括網址縮短與還原兩大功能。相對于長網址,短網址可以更方便地在電子郵件,社交網絡,微博和手機上傳播,例如原來很長的網址通過短網址服務即可生成相應的短網址,避免折行或超出字符限制。

常用的ID生成服務比如:mysql ID自增、 redis鍵自增、號段模式,生成的ID都是一串數字。短網址服務把客戶的長網址轉換成短網址,
實際是在dwz.cn域名后面拼接新產生的數字類型ID,直接用數字ID,網址長度也有些長,服務可以通過數字ID轉更高進制的方式壓縮長度。這種算法在短網址的技術實現上越來越多了起來,它可以進一步壓縮網址長度。轉進制的壓縮算法在生活中有廣泛的應用場景,舉例:
客戶的長網址:https://www.taobao.com/goods/shopping?code=PCoperatebanner
ID映射的短網址:https://dwz.cn/2047601319t66
轉進制后的短網址:https://dwz.cn/2ezwDJ0
長數字轉短字符串的壓縮算法,以下為具體實現:
```
/**
* 10進制轉為62進制
* @param integer $n 10進制數值
* @return string 62進制
*/
function dec62($n) {
$base = 62;
$index = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$ret = '';
for($t = floor(log10($n) / log10($base)); $t >= 0; $t --) {
$a = floor($n / pow($base, $t));
$ret .= substr($index, $a, 1);
$n -= $a \* pow($base, $t);
}
return $ret;
}
```
字符串同樣支持反解,將高位進制轉為10進制。
```
/**
* 62進制轉為10進制
* @param integer $n 62進制
* @return string 10進制
*/
function dec10($s) {
$base = 62;
$index = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$ret = 0;
$len = strlen($s) - 1;
for($t = 0; $t <= $len; $t ++) {
$ret += strpos($index, substr($s, $t, 1)) * pow($base, $len - $t);
}
return $ret;
}
```
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 依次表示0-62,大小寫表示不同的進制。10進制的數字采取62進位壓縮的方式轉為字符串,僅需要6位就可以滿足500多億的網址(568 0023 5583),唯一性得到滿足的同時保證長度夠短,在具體實現中也可隨機跳躍生成,防御撞庫攻擊。