【发布时间】:2023-03-13 14:56:01
【问题描述】:
我需要使用 PHP 生成一个字符串,它需要是唯一并且需要是 4 到 8 个字符(值变量)。
我以为我可以使用 crc32 哈希,但我无法确定有多少个字符,但肯定它是唯一的。另一方面,只创建一个“密码生成器”会生成重复的字符串,检查表中每个字符串的值需要一段时间。
我该怎么做?
谢谢!
也许我可以使用它:
function unique_id(){
$better_token = md5(uniqid(rand(), true));
$unique_code = substr($better_token, 16);
$uniqueid = $unique_code;
return $uniqueid;
}
$id = unique_id();
改为:
function unique_id($l = 8){
$better_token = md5(uniqid(rand(), true));
$rem = strlen($better_token)-$l;
$unique_code = substr($better_token, 0, -$rem);
$uniqueid = $unique_code;
return $uniqueid;
}
echo unique_id(4);
你认为我会在很长一段时间内每次都得到唯一的字符串吗?
【问题讨论】:
-
来自什么字符集的字符?
-
“检查表中每个字符串的值需要一段时间”- 如果您在该列上设置唯一索引,则不会。然后您只需要检查插入是否有效,如果没有,则重新生成字符串并重试。并不是说这是一个好主意。视情况而定。
-
@DanMan:是的,但是如果我有 1 000 000 个条目,请生成一个字符串,直到找到一个唯一的:S ... LOL 但对于少量,我会记住这一点;)非常感谢!
-
如果您希望加密安全的随机数据作为仅包含字母和数字的字符串,您可能需要使用
Random::alphanumericString($length)。
标签: php string hash random unique