Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何生成具有交替字母和数字的随机6字符字符串?_Php_String_Random_Passwords_Alphanumeric - Fatal编程技术网

Php 如何生成具有交替字母和数字的随机6字符字符串?

Php 如何生成具有交替字母和数字的随机6字符字符串?,php,string,random,passwords,alphanumeric,Php,String,Random,Passwords,Alphanumeric,我有一个PHP代码,可以生成一个6个字符的字母数字字符串,但它不能确保生成3个字母和3个数字 它生成一个字符串,如“ps7ycn” 字母表之间没有3个数字。 数字应该在字母之间 示例:a3g5h9这里有一种方法可以解决这个问题: $alpha = 'abcdefghijklmnopqrstuvwxyz'; $number = '0123456789'; $random = ''; for ( $i = 0; $i < 6; ++$i ) { if ( $i % 2 ) {

我有一个PHP代码,可以生成一个6个字符的字母数字字符串,但它不能确保生成3个字母和3个数字

它生成一个字符串,如“ps7ycn” 字母表之间没有3个数字。 数字应该在字母之间


示例:a3g5h9

这里有一种方法可以解决这个问题:

$alpha  = 'abcdefghijklmnopqrstuvwxyz';
$number = '0123456789';

$random = '';

for ( $i = 0; $i < 6; ++$i ) {
    if ( $i % 2 ) {
        $random .= substr( $number, rand( 0, strlen( $number ) - 1 ), 1 );
    } else {
        $random .= substr( $alpha, rand( 0, strlen( $alpha ) - 1 ), 1 );
    }
}
$alpha='abcdefghijklmnopqrstuvwxyz';
$number='0123456789';
$random='';
对于($i=0;$i<6;++$i){
如果($i%2){
$random.=substr($number,rand(0,strlen($number)-1),1);
}否则{
$random.=substr($alpha,rand(0,strlen($alpha)-1),1);
}
}

$random
现在将包含一个六个字符的随机值,第一个、第三个和第五个字符来自
$alpha
,第二个、第四个和第六个字符来自
$number

以下是一种解决此问题的方法:

$alpha  = 'abcdefghijklmnopqrstuvwxyz';
$number = '0123456789';

$random = '';

for ( $i = 0; $i < 6; ++$i ) {
    if ( $i % 2 ) {
        $random .= substr( $number, rand( 0, strlen( $number ) - 1 ), 1 );
    } else {
        $random .= substr( $alpha, rand( 0, strlen( $alpha ) - 1 ), 1 );
    }
}
$alpha='abcdefghijklmnopqrstuvwxyz';
$number='0123456789';
$random='';
对于($i=0;$i<6;++$i){
如果($i%2){
$random.=substr($number,rand(0,strlen($number)-1),1);
}否则{
$random.=substr($alpha,rand(0,strlen($alpha)-1),1);
}
}

$random
现在将包含一个六个字符的随机值,第一个、第三个和第五个字符来自
$alpha
,第二个、第四个和第六个字符来自
$number

这将确保您只获得交替的字母和数字:

代码:()


p、 s.如果要随机化第一个字符是字母还是数字,请在
for
循环后使用这行代码

if(rand(0,1)){$string=strrev($string);}
rand()
将生成
0
1
,条件将
0
视为
false
1
视为
true
。这提供了一个关于是否反转字符串的“抛硬币”场景


如果要保证输出中的字母和数字唯一

$letters=range('a','z'); // ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
shuffle($letters);
$numbers=range(0,9);  // [0,1,2,3,4,5,6,7,8,9]
shuffle($numbers);
$string='';
for($x=0; $x<3; ++$x){
    $string.=$letters[$x].$numbers[$x];
}
echo $string;
$letters=范围('a','z');//[a'、'b'、'c'、'd'、'e'、'f'、'g'、'h'、'i'、'j'、'k'、'l'、'm'、'n'、'o'、'p'、'q'、'r'、's'、't'、'u'、'v'、'w'、'x'、'y'、'z']
洗牌(字母);
$numbers=范围(0,9);//[0,1,2,3,4,5,6,7,8,9]
洗牌(数字);
$string='';

对于($x=0;$x这将确保您只获得交替的字母和数字:

代码:()


p、 s.如果要随机化第一个字符是字母还是数字,请在
for
循环后使用这行代码

if(rand(0,1)){$string=strrev($string);}
rand()
将生成一个
0
1
,条件将
0
视为
false
1
视为
true
。这提供了一个关于是否反转字符串的“投币”场景


如果要保证输出中的字母和数字唯一

$letters=range('a','z'); // ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
shuffle($letters);
$numbers=range(0,9);  // [0,1,2,3,4,5,6,7,8,9]
shuffle($numbers);
$string='';
for($x=0; $x<3; ++$x){
    $string.=$letters[$x].$numbers[$x];
}
echo $string;
$letters=range('a','z');/['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
洗牌(字母);
$numbers=范围(0,9);//[0,1,2,3,4,5,6,7,8,9]
洗牌(数字);
$string='';

对于($x=0;$x您可以使用此函数

<?php
 public static function random_string($charsNo = 3, $NumbersNo = 3)
    {
        $character_set_array = array();
        $character_set_array[] = array('count' => $charsNo, 'characters' => 'abcdefghijklmnopqrstuvwxyzasdsawwfdgrzvyuyiuhjhjoppoi');
        $character_set_array[] = array('count' => $NumbersNo, 'characters' => '0123456789');
        $temp_array = array();
        foreach ($character_set_array as $character_set) {
            for ($i = 0; $i < $character_set['count']; $i++) {
                $temp_array[] = $character_set['characters'][rand(0, strlen($character_set['characters']) - 1)];
            }
        }
        shuffle($temp_array);
        return implode('', $temp_array);
    }
?>

您可以使用此功能

<?php
 public static function random_string($charsNo = 3, $NumbersNo = 3)
    {
        $character_set_array = array();
        $character_set_array[] = array('count' => $charsNo, 'characters' => 'abcdefghijklmnopqrstuvwxyzasdsawwfdgrzvyuyiuhjhjoppoi');
        $character_set_array[] = array('count' => $NumbersNo, 'characters' => '0123456789');
        $temp_array = array();
        foreach ($character_set_array as $character_set) {
            for ($i = 0; $i < $character_set['count']; $i++) {
                $temp_array[] = $character_set['characters'][rand(0, strlen($character_set['characters']) - 1)];
            }
        }
        shuffle($temp_array);
        return implode('', $temp_array);
    }
?>

尝试以下代码:

 $str = '';
 for ( $i = 1; $i <= 6; ++$i ) {
    if ( $i % 2 ) {
     $str .=  chr(rand(97,122));
    }else{
       $str .= rand(0,9);
   }
}
$str='';
对于($i=1;$i请尝试以下代码:

 $str = '';
 for ( $i = 1; $i <= 6; ++$i ) {
    if ( $i % 2 ) {
     $str .=  chr(rand(97,122));
    }else{
       $str .= rand(0,9);
   }
}
$str='';

对于($i=1;$i您的代码在哪里?数字或字母是否可以复制?是否可以:
3r3r
?字符类型是否需要替换或是否有效:
123abc
?您是否在发布问题之前搜索了已有的答案?欢迎使用StackOverflow。请阅读并遵循发布指南:什么类型我可以问的问题以及如何问:记住也要包括最小的、完整的、可验证的示例:。然后,单击
edit
编辑您的问题,以便我们可以提供帮助。您的代码在哪里?数字或字母可以重复吗?这样可以吗:
3r3r
?字符类型需要交替还是有效:
>123abc
?在发布问题之前,您是否在SO上搜索了预先存在的答案?欢迎来到StackOverflow。请阅读并遵循发布指南:我可以问什么类型的问题,以及如何提问:记住也要包含最少的、完整的、可验证的示例:。然后,单击
编辑
编辑您的问题,以便我们可以帮忙,因为它永远不会改变,调用
strlen()
每次迭代都不是最佳做法。最好在多维数组中创建另一个存储
长度的元素。空数组声明是不必要的。此外,当使用空字符串将数组元素粘合在一起时,可以忽略第一个参数。请参阅我的答案。我犯了与在我之前的帖子中,你假设六个数字和字母需要被洗牌(以获得最大的随机性)。然而,这不是OP所要求的。问题是三个字母应该用数字分隔。你为什么卡住了“gobbledygook在您的characters元素中,26个字母的含义是什么?您给某些字母的概率增加了不必要的权重。我对这个答案投了反对票,因为它没有提供OP要求的输出。因为它从不更改,请调用
strlen()
每次迭代都不是最佳做法。最好在多维数组中创建另一个存储
长度的元素。空数组声明是不必要的。此外,当使用空字符串将数组元素粘合在一起时,可以忽略第一个参数。请参阅我的答案。我犯了与你在我之前的帖子中假设六个数字和字母需要被洗牌(以获得最大的随机性)。然而,这不是OP所要求的。问题是