用PHP生成非重复标识符的方法
本文演示了为PHP生成一个不重复标识符的方法,供大家参考,具体实现方法如下:不仅生成重复身份,我们主要是根据当前时间的时间,然后转换为MD5值,这几乎是唯一可以保证的标签,下面关于PHP的顺序不重复标识符代码,有兴趣的朋友可以看一下
PHP是一种功能生成唯一ID:uniqid(),这是基于对当前时间的秒数,并应用如下:
复制代码如下:回波uniqid();的 / / 13位的字符串
回声uniqid(php_ ); / /当然你可以添加前缀
回声uniqid(php_,true); / /如果二参数more_entropy真正产生23位的字符串
但是它产生的标志可能不是唯一的,所以很多人会:
复制代码代码如下:< PHP
这是第一次和简单的方法,当然,用SHA1()函数也可以。
回声MD5(uniqid());
第二,利用时间戳的方法
回声MD5(时间)()。mt_rand(11000000));
>
实例uff1a
复制代码代码如下:<
生成唯一标识符
/ / SHA1()函数,安全散列算法(SHA1)
功能create_unique(){
数据_server美元美元'http_user_agent'} {。_server美元'remote_addr'} {
时间()。伦德();
返回SHA1($数据);
返回MD5(时间());
返回数据;
}
>
例子如下:
复制代码代码如下:< PHP
NewHash = create_unique(美元);
回声NewHash美元;
>
我看到很多人使用MD5()函数,即使它并不完全意味着这个目的:
复制代码如下:生成唯一字符串
回声MD5(时间)()。mt_rand(11000000));
其实是有一个PHP函数命名uniqid(),是指
唯一的字符串生成
uniqid(回声);
打印
4bd67c947233e
* /
另一个唯一的字符串生成
uniqid(回声);
打印
4bd67c9472340
* /
您可能注意到,尽管字符串是唯一的,但前面的几个字符是相似的,因为生成的字符串与服务器时间相关。
但事实上,有一个友好的方面,因为每一个新生成的ID是按字母顺序排列的,这种排序变得非常简单。
为了减少重复的概率,您可以通过前缀或第二个参数来增加:
将代码复制如下:使用前缀
回声uniqid('foo_);
打印
foo_4bd67d6cd8b8f
* /
更多熵
回声uniqid('',真的);
打印
4bd67d6cd8b926.12135106
* /
回声uniqid('bar_ ',真的);
打印
bar_4bd67da367b650.43684647
* /
这个函数将生成比MD5()更短的字符串,并节省一些空间。
PHP方法生成全局唯一标识符(GUID)
GUID在空间和时间上是唯一的,可以同时保证来自不同地方的不同号码。
世界上没有两台计算机可以生成重复的GUID值。
当需要GUID时,可以由算法自动生成,而无需管理权限。
GUID的长度固定且相对较短,因此非常适合于排序、识别和存储。
复制代码代码如下:< PHP
生成PHP
功能getguid(){
charid美元= strtoupper(MD5(uniqid(mt_rand(()(),真的))))
$字符= CHR(45); / /
$ UUID = substr(charid美元,0, 8美元,连字符)。
。substr(charid美元,8, 4美元,连字符)。
。substr(charid美元,12, 4美元,连字符)。
。substr(charid美元,16, 4美元,连字符)。
。substr(charid美元,20,12);
返回的UUID;
}
>
希望本文能对大家的PHP程序设计有所帮助。