尝试在我的页面上显示随机生成的字符串

时间:2014-04-29 18:23:28

标签: php string sequence

我正在尝试在我的页面上显示随机生成的字符串(php),但我完全不知道如何执行此操作。

我只想使用以下字母和数字:

  

B C D F G H J K M P Q R T V W X Y Z 2 3 4 6 7 8

采用以下格式:

XXXXX-XXXXX-XXXXX-XXXXX-XXXXX

任何人都可以帮助我,并给我一个脚本,我可以放在我的页面上吗?非常感谢帮助!

我尝试了这个,但由于某些奇怪的原因它甚至没有显示在我的页面上。

$tokens = 'BCDFGHJKMPQRTVWXYZ2346789';

$serial = '';

for ($i = 0; $i < 5; $i++) {
    for ($j = 0; $j < 5; $j++) {
        $serial .= $tokens[rand(0, 35)];
    }

    if ($i < 3) {
        $serial .= '-';
    }
}

echo $serial;

3 个答案:

答案 0 :(得分:1)

<?php
    $enters =  explode(' ', "B C D F G H J K M P Q R T V W X Y Z 2 3 4 6 7 8 9");
    $entry = rand(0,count($enters)-1);
    echo $enters[$entry];
    $output = "";
    for($i=1; $i++; $i<=25) {
        $entry = rand(0,count($enters)-1);
        $output  .= $enters[$entry] . ($i % 5 == 0 && $i < 25 ? '-' : '' );
    }
    echo $output;
?>

答案 1 :(得分:1)

<?php

$charsPerGroup = 5;
$groups = 5;
$groupDelimiter = '-';

$tokens = explode(' ', 'B C D F G H J K M P Q R T V W X Y Z 2 3 4 6 7 8 9'); // from your question, format this however you want

$tokens = array_flip($tokens);

$resultArray = array();

for($i=0;$i<$groups;$i++) {
    $resultArray[] = join(array_rand($tokens, $charsPerGroup));
}

echo join($groupDelimiter, $resultArray);

答案 2 :(得分:1)

你快到了。以下是对代码的一些修复;

<?php
$tokens = 'BCDFGHJKMPQRTVWXYZ2346789';

$serial = '';

for ($i = 0; $i < 5; $i++) {
    for ($j = 0; $j < 5; $j++) {
        $serial .= $tokens[rand(0, strlen($tokens) - 1)];
    }

    if ($i < 4) {
        $serial .= '-';
    }
}

echo $serial;
?>

我无法确定您的网页未显示的原因,但在您的原始代码中,您在页面顶部缺少<?php

修改:以下是我对您的代码所做的一些更改的快速说明。

  1. 您的代码有rand(0, 35)。但由于您将来可能会更改$tokens中的字符,因此最好使用strlen($tokens) - 1简单地计算$令牌的长度(-1非常重要,因为strlen()启动计数为1,而$tokens[INDEX]从0开始计数。

  2. 您的代码有if ($i < 3),但实际上您需要四个破折号,因此我将其更改为if ($i < 4)