关于这个:
Generating a unique random string of a certain length and restrictions in 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个数字?
感谢。
答案 0 :(得分:0)
您修改的功能:
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个字符
答案 1 :(得分:0)
function getRandomString($ length = 8){ $ characters = str_split(&#39; abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789&#39;);
for ($i = 0; $i < $length; $i++) {
$rand = '';
foreach (array_rand($characters, 5) as $k) $rand .= $characters[$k];
$string[$i] = $rand;
}
return $string;
}