PHP –生成唯一ID

在某些情况下,您需要生成唯一的字符串。我已经看到很多人为此使用md5()函数,即使它并非完全用于此目的:

// 产生唯一的字符串
echo md5(time() . mt_rand(1,1000000));

实际上有一个名为的PHP函数uniqid()将用于此目的。

// 产生唯一的字符串
echo uniqid();
/* prints
4bd64c947233e
*/

// 生成另一个唯一的字符串
echo uniqid();
/* prints
4bd67c9412340
*/

您可能会注意到,即使字符串是唯一的,对于前几个字符来说,它们似乎也很相似。这是因为生成的字符串与服务器时间有关。实际上,这有一个很好的副作用,因为每个新生成的ID都以字母顺序出现在后面,因此可以对其进行排序。
为了减少重复的机会,可以传递前缀或第二个参数来增加熵:

// 带前缀
echo uniqid('foo_');
/* prints
foo_4bd67d6cd8b8f
*/

// 具有更多的熵
echo uniqid('',true);
/* prints
4bd67d6cd8b926.12135106
*/

// 两个都
echo uniqid('bar_',true);
/* prints
bar_4bd67da367b650.43684647
*/

此函数将生成比md5()短的字符串,这还将节省您一些空间。