你修改的函数:
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 );
}
eval.in demo
从您的函数开始,我们将$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个字符