在PHP中为URL缩短服务生成代码的最佳方法是什么?
我必须使用这种方式为URL缩短服务生成代码在PHP中为URL缩短服务生成代码的最佳方法是什么?,php,algorithm,Php,Algorithm,我必须使用这种方式为URL缩短服务生成代码 $code = substr(md5(uniqid(rand(), 1)), 3, 5); 但这总是需要生成一个固定长度的代码(在本例中为5) 如果数据库中有大量URL无法忍受此处的五个符号,该怎么办 很抱歉英文不好。您必须存储URL,因此只需创建一个表格即可: URL:id,URL 其中id是一个自动递增序列,url列被索引。这样,每个URL都是唯一的。最简单的方法是简单地使用ID,但您可以使用更短的ID 我的建议是将ID转换为基数62(1
$code = substr(md5(uniqid(rand(), 1)), 3, 5);
但这总是需要生成一个固定长度的代码(在本例中为5)
如果数据库中有大量URL无法忍受此处的五个符号,该怎么办
很抱歉英文不好。您必须存储URL,因此只需创建一个表格即可:
- URL:id,URL
$digits = range(0, 9) + range('A', 'Z') + range('a', 'z')
function from10($base10) {
global $digits;
$ret = '';
$nd = count($digits);
$n = $nd;
while ($base10 > 0) {
$r = $base10 % $n;
$ret .= $digits[$r];
$n = (int)($base10 / $n);
$n *= $nd;
}
return $ret;
}
function to10($baseN) {
global $digits;
$nd = count($digits);
$ret = 0;
$n = $nd;
for ($i=0; $i<strlen($baseN); $i++) {
$ret += $n * $baseN[$i];
$n *= $nd;
}
return $ret;
}
$digits=范围(0,9)+范围('A','Z')+范围('A','Z'))
函数from10($base10){
全球美元位数;
$ret='';
$nd=计数(位数);
$n=$nd;
而($base10>0){
$r=$base10%$n;
$ret.=$digits[$r];
$n=(int)($base10/$n);
$n*=nd$nd;
}
返回$ret;
}
函数到10($baseN){
全球美元位数;
$nd=计数(位数);
$ret=0;
$n=$nd;
对于($i=0;$i)