/**
* 生成短地址的标识,场景:根据数据库自增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 '<br/>';
echo '短地址:' . $short_url->to_code(456);

输出:

短地址:Dd
短地址:caB


用法,将生成的标示存在数据库与id对应,这样就可以实现短地址效果了。

你可能感兴趣的文章