关于php:生成固定长度的随机字符串

Generating random string of fixed length

本问题已经有最佳答案,请猛点这里访问。

我想在PHP中生成一个6个字符长的唯一键,其中前3个应该是字母,后3个应该是数字。

我知道uniqid()函数,但它生成13个字符长的密钥,而且它也不符合我的要求,因为我需要前3个字符作为字母,后3个字符作为数字。

我可以用什么方法修改uniqid()来满足我的需求?

我也不希望发生任何冲突,因为如果发生这种情况,我的整个数据库将被浪费,这就是为什么我不能使用rand函数,因为很可能会发生冲突


您可以创建这样的手动随机化器:

1
2
3
4
5
6
7
8
9
10
11
<?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变量将是类似"axy813"或"nbm449"的字符串。


1
2
3
4
5
6
7
8
9
10
11
12
13
 <?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;
    ?>

这会帮你的