如何生成20个字符的数字字母混合唯一标识符

4
我希望能够在PHP中生成20个字符的哈希码并将其插入到表格中,同时这个哈希码应该是唯一的。
以后可以使用哈希码来访问表格中的记录。
<?php
   echo uniqid();
   //generate 20 charcter alphanumeric id here
?>

我该如何做到这一点?


1
https://github.com/ramsey/uuid - 为什么它必须是20个字符?如果你要强制实施这样的限制,那么商业上的理由是什么? - Mark Baker
2个回答

6
尝试这个,它将始终生成一个不同的、唯一的字符串,取决于微秒和随机数。
<?php
     // Here microtime will be unique everytime
     echo substr(md5(microtime()*rand(0,9999)),0,20);
 ?>

2
选取唯一数字的子字符串不会使子字符串成为唯一的。 - Shaunak Sontakke

2
被接受的答案是错误的,你使用substr($random, 0, 20)函数调用削减了随机性。
以下解决方案更好:
<?php
echo bin2hex(openssl_random_pseudo_bytes(10));

此外,如果字符串仅用作数据库中的键,将自己限制在20个字符是不好的想法。为什么不使用uniqid($prefix, true)呢?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接