我试图创建一个字母数字字符串并将其用于我的数据库中的唯一字段,它不是替换主键的心态。下面的代码生成一个22长度的文本,但我担心的是它会继续产生唯一的字符串,因为我可能需要它来进行唯一的数据识别。
<?php
$len =22;
$rand = substr(str_shuffle(md5(time())),0,$len);
echo $rand;
?>
答案 0 :(得分:4)
使用 openssl_random_pseudo_bytes - 它会生成伪随机字节串
和 bin2hex()函数将ASCII字符串转换为十六进制值
它将为您提供安全令牌
bin2hex(openssl_random_pseudo_bytes($length))
答案 1 :(得分:0)
您可以尝试以下操作:
$random = 'abcdefghijklmnopqrstuvwxyz0123456789';
$string = '';
for ($i = 0; $i < $string_length; $i++) {
$string .= $random [rand(0, strlen($random ) - 1)];
}
$ string_length是您想要的字符串的长度。它将继续为您提供唯一的字符串。
答案 2 :(得分:0)
我将始终在结果字符串中包含time()
以确保它是唯一的,如果前10个字符都是可以接受的数字:
$rand = substr(time().str_shuffle(md5(time())),0,$len);
函数str_shuffle(md5(time()))
不太可能在一秒内产生相同的结果。
除了手动检查随机字符串是否存在唯一性的记录外,这是最简单的方法。
答案 3 :(得分:0)
您可以使用php提供的方法uniqid()。