为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
白衣染霜花 2021-09-18 16:50:32
我正在尝试生成带有 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任何帮助表示赞赏。
查看完整描述

3 回答

?
森林海

TA贡献2011条经验 获得超2个赞

您可以通过首先添加 25-26 个 alpha 字符来完成此操作。然后将其余部分添加为数字。完成后,只需打乱整个字符串:


function randomString()

{

    // Define the result variable

    $str   = '';


    // Generate an array with a-f

    $alpha = range('a', 'f');


    // Get either 25 or 26

    $alphaCount = rand(25, 26);


    // Add a random alpha char to the string 25 or 26 times.

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

        $str .= $alpha[array_rand($alpha)];

    }


    // Check how many numbers we need to add

    $numCount = 64 - $alphaCount;


    // Add those numbers to the string

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

        $str .= rand(0, 9);

    }


    // Randomize the string and return it

    return str_shuffle($str);

}

这是一个演示:https : //3v4l.org/4YfsS


查看完整回答
反对 回复 2021-09-18
  • 3 回答
  • 0 关注
  • 96 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信