在某些情况下,您需要生成唯一的字符串。我已经看到很多人为此使用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()短的字符串,这还将节省您一些空间。