生成具有固定数量字母的随机字母数字字符串

我正在尝试生成带有 0-9 数字和 a - f 字母的随机字母数字字符串,并具有以下代码:-


 <?php

 function random_str($length, $keyspace = '0123456789abcdef')

{

$pieces = [];

$max = mb_strlen($keyspace, '8bit') - 1;

for ($i = 0; $i < $length; ++$i) {

    $pieces []= $keyspace[random_int(0, $max)];

}

return implode('', $pieces);

}


$a = random_str(64);

echo $a;

?>

但问题是它会随机生成一个包含多个字母的字符串,但我想要一个总共有 64 个字符的字符串,并且总共必须有 26 或 25 个字母,其余的应该是数字。他们不应该分开而是像这样混合


 7de5a1a5ae85e3aef5376333c3410ca984ef56f0c8082f9d6703414c01afbec3

任何帮助表示赞赏。


白衣染霜花
浏览 97回答 3
3回答

森林海

您可以通过首先添加 25-26 个 alpha 字符来完成此操作。然后将其余部分添加为数字。完成后,只需打乱整个字符串:function randomString(){&nbsp; &nbsp; // Define the result variable&nbsp; &nbsp; $str&nbsp; &nbsp;= '';&nbsp; &nbsp; // Generate an array with a-f&nbsp; &nbsp; $alpha = range('a', 'f');&nbsp; &nbsp; // Get either 25 or 26&nbsp; &nbsp; $alphaCount = rand(25, 26);&nbsp; &nbsp; // Add a random alpha char to the string 25 or 26 times.&nbsp; &nbsp; for ($i = 0; $i < $alphaCount; $i++) {&nbsp; &nbsp; &nbsp; &nbsp; $str .= $alpha[array_rand($alpha)];&nbsp; &nbsp; }&nbsp; &nbsp; // Check how many numbers we need to add&nbsp; &nbsp; $numCount = 64 - $alphaCount;&nbsp; &nbsp; // Add those numbers to the string&nbsp; &nbsp; for ($i = 0; $i < $numCount;&nbsp; $i++) {&nbsp; &nbsp; &nbsp; &nbsp; $str .= rand(0, 9);&nbsp; &nbsp; }&nbsp; &nbsp; // Randomize the string and return it&nbsp; &nbsp; return str_shuffle($str);}这是一个演示:https : //3v4l.org/4YfsS
打开App,查看更多内容
随时随地看视频慕课网APP