我想在PHP循环中生成30个唯一的字母数字字符串

时间:2016-07-16 21:49:58

标签: php

<?php
// Set length of the string
$length = 30;
$random = substr(md5(rand()), 0, 15);
// Use for-loop to generate thirty unique alphanumeric strings
For($i=0; $i<$length;) {echo $random.$i++."<br />";

上面的代码生成类似5523d651bfb642b0,5523d651bfb642b1,5523d651bfb642b2,5523d651bfb642b3等的内容。下一个值太容易预测了。我想要一些完全不同的东西,就像我在浏览器中刷新页面一样。如果我删除循环并且只是echo $ random,那么每次刷新页面时页面都会生成一个完全不同的字符串。如何使用循环生成完全不同的东西,如5523d651bfb642b0,2yyd00nngbh201km,78gdfmpqg01597v等?感谢。

2 个答案:

答案 0 :(得分:1)

function generateRandomString($length = 30) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}

$i = 0;
$times_to_run = 30;
while ($i++ < $times_to_run)
{
    generateRandomString();
}

答案 1 :(得分:0)

如果您使用的是PHP 7,则可以轻松生成随机字符串:

$bytes = random_bytes(5); //random. Increase input for more bytes
$code = bin2hex($bytes); // eg: 385e33f741

在PHP 7之前,我将使用函数

生成一个字母数字代码
function getRandomString($length){
    $chars = 'abcdefghijklmnopqrstuvwxyz0123456789';    
    $result = '';
    while(strlen($result)<$length) {
        $result .= $chars{mt_rand(0,strlen($chars)-1)};
    }
    return $result;
}

要获得10个字符的随机代码,请致电:

$randomString = getRandomString(10);

您可以为$ chars ofcourse添加更多字符