Home >Backend Development >PHP Tutorial >求一个不会生成重复值的短网址算法

求一个不会生成重复值的短网址算法

WBOY
WBOYOriginal
2016-06-23 14:12:391372browse

求一个不会生成重复值的短网址算法,网上找了一些,都有一定重复的概率,或者能提供一种重复概率最小的算法也行


回复讨论(解决方案)

这个应该是先生成一个随机字符串,
然后查询数据库中是否已经存在,
不存在就入库,
存在就再换一个再查,

短址本来就只有五位左右的长度,
我觉得不管用什么算法都不可能保证不重复,
所以只能通过对以前生成的来对比。

最简单就是,随机串是根据对应id生成的,也就是看着像随机串,其实是id根据一定的规则生成的,基本上在没有得到这个id范围的上线的话,是不会用重复的

我自己想到的是base62算法 呵呵~~~

<?phpfunction base62($i){	if($i<0) return '';	$ch = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';	$a='';do{$a=$ch[$i%62].$a;$i=intval($i/62);}while($i>0);return $a;}echo base62(63);?>



由一个整型ID 生成它的base62编码
比如 
61 => 10
63 => 11
..
71 => 1a
72 => 1b
900000000(9亿) => YUj72

都会重复的 可以在数据库中做记录

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn