Php 生成固定长度的随机字符串
我想在php中生成一个6个字符长的唯一键,其中前3个应该是字母,后3个应该是数字 我知道Php 生成固定长度的随机字符串,php,random,Php,Random,我想在php中生成一个6个字符长的唯一键,其中前3个应该是字母,后3个应该是数字 我知道uniqid()函数,但它会生成13个字符长的键,而且它也不符合我的要求,因为我需要前3个字符作为字母,后3个字符作为数字 我可以通过任何方式修改uniqid()以满足我的需求吗 我也不希望发生任何冲突,因为如果发生这种情况,我的整个数据库都将被浪费,这就是为什么我不能使用rand函数,因为很可能会发生冲突 <?php $alphabets = "ABCDEFGHIJKLMNO
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()。我尝试过谷歌,但到处都只有这个函数,冲突又如何?冲突的概率是多少?它可以创建重复。如果要确保不存在任何重复项,则需要对照某种数据源(如数据库或包含已生成值的文件)检查该值,如果是重复项,则需要重新创建一个新值。那么冲突又如何?这种情况下发生冲突的概率是多少?