我正在尝试在我的页面上显示随机生成的字符串(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;
答案 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
。
修改:以下是我对您的代码所做的一些更改的快速说明。
您的代码有rand(0, 35)
。但由于您将来可能会更改$tokens
中的字符,因此最好使用strlen($tokens) - 1
简单地计算$令牌的长度(-1
非常重要,因为strlen()
启动计数为1,而$tokens[INDEX]
从0开始计数。
您的代码有if ($i < 3)
,但实际上您需要四个破折号,因此我将其更改为if ($i < 4)
。