/**
* 生成短地址的标识,场景:根据数据库自增id生成短地址的标示
*/
class Short_url{
/**
* 自定义数,可以根据需要增加符号
*/
private $code_map = array(
'0' => 'a',
'1' => 'b',
'2' => 'c',
'3' => 'd',
'4' => 'e',
'5' => 'A',
'6' => 'B',
'7' => 'C',
'8' => 'D',
'9' => 'E',
'10' => '1',
'11' => '2',
'12' => '3',
'13' => '4',
'14' => '5'
// 增加符号
);
/**
* 根据十进制整数转换为自定义进制数
*/
public function to_code($num)
{
// 结果
$result = '';
// 进制
$scale = count($this->code_map);
// 余数
$remain = 0;
while($num>0)
{
$remain= $num % $scale;
$num = floor($num / $scale);
// echo '余数:' . $remain . ";\n"; // 调试代码
$result = $this->code_map[$remain] . $result;
}
return $result;
}
}
// 调用
$short_url = new Short_url();
echo '短地址:' . $short_url->to_code(123);
echo '
';
echo '短地址:' . $short_url->to_code(456);
输出:
短地址:Dd短地址:caB
用法,将生成的标示存在数据库与id对应,这样就可以实现短地址效果了。