生成固定长度的随机字符串

时间:2015-06-26 08:41:03

标签: php random

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

我知道uniqid()函数,但它生成了13个字符的长键,而且它不符合我的要求,因为我需要前3个字符作为字母,接下来3个作为数字。

我可以通过哪种方式修改uniqid()以符合我的要求?

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

2 个答案:

答案 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;。