Php - 具有固定正则表达式的随机字符串


Php - Random string with fixed regexp

关于这个:

在 PHP 中生成一定长度和限制的唯一随机字符串?

我希望它进化:

function getRandomString($length = 8) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $string = '';
    for ($i = 0; $i < $length; $i++) {
        $string .= $characters[mt_rand(0, strlen($characters) - 1)];
    }
    return $string;
}

如何随机使用 8 个字符但有 5 位数字?

谢谢。

函数 getRandomString($length = 8) { $characters = str_split('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789');

for ($i = 0; $i < $length; $i++) {
    $rand = '';
    foreach (array_rand($characters, 5) as $k) $rand .= $characters[$k];
    $string[$i] = $rand;
}
return $string;

}

http://ideone.com/SSg3m4

修改后的函数:

function getRandomString( $length = 8 ) 
{
    $characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $digits     = '0123456789';
    $string     = '';
    for( $i = 0; $i < 5; $i++ )
    {
        $string .= $digits[ mt_rand( 0, strlen( $digits ) - 1 ) ];
    }
    for( $i = 5; $i < $length; $i++ ) 
    {
        $string .= $characters[ mt_rand( 0, strlen( $characters ) - 1 ) ];
    }
    $array = str_split( $string );
    shuffle( $array );
    return implode( '', $array );
}

3v4l.org 演示

从您的函数开始,我们将$characters除以 $characters$digits ,然后在空字符串中添加 5 个随机数字和剩余的随机字符。

最后,我们洗牌结果字符串并返回它。

变体(不重复字符):

function getRandomString( $length = 8 )
{
    $characters = str_split( 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' );
    $digits     = str_split( '0123456789' );
    shuffle( $characters );
    shuffle( $digits );
    
    $retval = array_merge
    (
        array_slice( $digits, 0, 5 ), 
        array_slice( $characters, 0, $length-5 )
    );
  
    shuffle( $retval );
    
    return implode( '', $retval );
}

我们直接从数组开始:$characters$digits ,然后我们洗牌它们,我们提取 5 位数字项目和剩余字符项目,将它们合并到数组$retval

最后,我们洗牌$retval数组并将其作为字符串内爆返回。

<小时 />

编辑:先例版本3位/5个字符;实际版本:5位/3个字符