我想在php中生成一个6个字符长的唯一键,其中前3个应该是字母,接下来3个应该是数字。
我知道uniqid()
函数,但它生成了13个字符的长键,而且它不符合我的要求,因为我需要前3个字符作为字母,接下来3个作为数字。
我可以通过哪种方式修改uniqid()
以符合我的要求?
我也不想要任何碰撞,因为如果发生这种情况,我的整个数据库将被浪费,这就是为什么我不能使用rand函数,因为我很可能会发生碰撞
答案 0 :(得分:3)
<?php
$alphabets = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
$numbers = "1234567890";
$randstr = '';
for($i=0; $i < 6; $i++){
if($i<3){
$randstr .= $alphabets[rand(0, strlen($alphabets) - 1)];
} else {
$randstr .= $numbers[rand(0, strlen($numbers) - 1)];
}
}
echo $randstr;
?>
这将为你完成工作
答案 1 :(得分:3)
你可以像这样创建一个手动随机数发生器:
<?php
$alphabet = 'abcdefghijklmnopqrstuvwxyz';
$numbers = '0123456789';
$value = '';
for ($i = 0; $i < 3; $i++) {
$value .= substr($alphabet, rand(0, strlen($alphabet) - 1), 1);
}
for ($i = 0; $i < 3; $i++) {
$value .= substr($numbers, rand(0, strlen($numbers) - 1), 1);
}
$value
变量将是&#34; axy813&#34;或&#34; nbm449&#34;。