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

Php 生成固定长度的随机字符串,php,random,Php,Random,我想在php中生成一个6个字符长的唯一键,其中前3个应该是字母,后3个应该是数字 我知道uniqid()函数,但它会生成13个字符长的键,而且它也不符合我的要求,因为我需要前3个字符作为字母,后3个字符作为数字 我可以通过任何方式修改uniqid()以满足我的需求吗 我也不希望发生任何冲突,因为如果发生这种情况,我的整个数据库都将被浪费,这就是为什么我不能使用rand函数,因为很可能会发生冲突 <?php $alphabets = "ABCDEFGHIJKLMNO

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

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

我可以通过任何方式修改
uniqid()
以满足我的需求吗

我也不希望发生任何冲突,因为如果发生这种情况,我的整个数据库都将被浪费,这就是为什么我不能使用rand函数,因为很可能会发生冲突
 <?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;
    ?>

这将为您完成工作

您可以创建如下手动随机化器:

<?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);
}

有太多可能的方法来实现这一点,你尝试过什么?没有,因为我只知道uniqid()。我尝试过谷歌,但到处都只有这个函数,冲突又如何?冲突的概率是多少?它可以创建重复。如果要确保不存在任何重复项,则需要对照某种数据源(如数据库或包含已生成值的文件)检查该值,如果是重复项,则需要重新创建一个新值。那么冲突又如何?这种情况下发生冲突的概率是多少?