首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >随机字符串规则

随机字符串规则
EN

Stack Overflow用户
提问于 2018-03-15 16:01:57
回答 2查看 65关注 0票数 1

我有一个函数,它生成一个随机的三个字符的字母-数字字符串。我需要对其进行修改,使新字符串由2个alpha字符和2个数字字符组成。数字和字母的组合可以是随机的。

代码语言:javascript
复制
function generate_random($length = 3) {
    $characters = '123456789ABCDEFGHJKLMNPRSTUVWXYZ';

    $rand_str = '';
    for ($p = 0; $p < $length; $p++) {
        $rand_str .= $characters[mt_rand(0, strlen($characters)-1)];
    }

    return $rand_str;
}

我需要对其进行修改,使新字符串由2个alpha字符和2个数字字符组成。数字和字母的组合可以是随机的。我该怎么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-15 16:11:09

你可以把数字和字母隔开。然后,将每个数组的N个值附加到数组中,对其进行洗牌,然后内爆以获得字符串:

代码语言:javascript
复制
function generate_random($nNumbers = 2, $nAlpha = 2) {
    // prepare data to use
    $num = '123456789';
    $numlen = strlen($num) - 1;
    $alpha = 'ABCDEFGHJKLMNPRSTUVWXYZ';
    $alphalen = strlen($alpha) - 1;

    $out = []; // New array

    // generate N numbers
    for ($i = 0; $i < $nNumbers ; $i++) {
        $out[] = $num[mt_rand(0, $numlen)];
    }
    // generate N letters
    for ($i = 0; $i < $nAlpha ; $i++) {
        $out[] = $alpha[mt_rand(0, $alphalen)];
    }
    shuffle($out); // Shuffle the array
    return implode($out); // Convert to string
}

echo generate_random() ;
// echo generate_random(2, 4) ; // example
票数 1
EN

Stack Overflow用户

发布于 2018-03-15 16:15:10

我个人会这样做:

代码语言:javascript
复制
function generate_random($countAlpha = 2, $countNumeric = 2, $randomize = true) {

    $alpha = 'ABCDEFGHJKLMNPRSTUVWXYZ';
    $numeric = '123456789';

    $rand_str = '';
    for ($p = 0; $p < $countAlpha; $p++) {
        $rand_str .= $alpha[mt_rand(0, strlen($alpha)-1)];
    }
    for ($p = 0; $p < $countNumeric; $p++) {
        $rand_str .= $numeric[mt_rand(0, strlen($numeric)-1)];
    }
    if($randomize) {
      $rand_str = str_split($rand_str);
      shuffle($rand_str);
      return implode($rand_str);
    }
    return $rand_str;
}

在我的内部有2个for循环,每个循环基于参数$countAlpha$countNumeric。我还有第三个参数,$randomize,如果您愿意的话,它允许您将输出随机化。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49304094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档