我想知道如何使用PHP生成随机数字和字母

我想知道如何使用PHP生成随机数字和字母,php,Php,如何生成混合在一起的随机数字和字母 这是我的php代码 $i=1; while($i<=10000){ echo $i++; } $i=1; 而($i这里是我使用的函数 function rand_str($n = 32, $str = "abcdefghijklmnopqrstuvwxyz0123456789") { $len = strlen($str); $pin = ""; for($i = 0; $i < $n; $i++) {

如何生成混合在一起的随机数字和字母

这是我的php代码

$i=1;
while($i<=10000){
 echo  $i++;
}
$i=1;

而($i这里是我使用的函数

function rand_str($n = 32, $str = "abcdefghijklmnopqrstuvwxyz0123456789")
{
    $len = strlen($str);

    $pin = "";
    for($i = 0; $i < $n; $i++)
    {
        $rand    = rand(0, $len - 1);
        $letter    = substr($str, $rand, 1);
        $pin   .= $letter;
    }
    return $pin;
} 
函数rand_str($n=32,$str=“abcdefghijklmnopqrstuvwxyz012456789”) { $len=strlen($str); $pin=“”; 对于($i=0;$i<$n;$i++) { $rand=rand(0,$len-1); $letter=substr($str,$rand,1); $pin.=$letter; } 返回$pin; }
您需要这样的东西:

   $chars = 'ABCDEFGHIJKLMNOPQRSTOUVWXYZ0123456789';
    $i = 0;
    do{
    $i++;
    $ret .= $ret.$chars[mt_rand(0,35)];
    }while($i<$length+1);
$chars='abcdefghijklmnopqrstouvwxyz012456789';
$i=0;
做{
$i++;
$ret.=$ret.$chars[mt_rand(0,35)];

}而($i您可以打印如下随机字母数字字符:


印刷成本(兰特(97122));

检查要返回的ascii字符。97=a和122=z。(我认为这是正确的)

编辑:几乎是这样。你必须包括0-9,但这足够让你开始了。

这是我的

<?php
function randomMixed($length) {
    $output = '';
    $rand = array_merge(range('a','z'), range('A','Z'), range('0','9'));

    for($i = 0; $i < $length; $i++) {
            $output .= $rand[array_rand($rand)];
    }
    return $output;
}
?>

PHP提供了该函数。该函数保证字符串的唯一性。 因此,uniqid()中的值是相当可预测的,不应用于加密(顺便说一句,PHPs rand()被认为是相当不可预测的)

通过md5()运行前缀为rand()的uniqid()会给出更多不可预测的值:

$quite_random_token = md5(uniqid(rand(1,6)));

另一个好处是,md5()确保哈希(字符串)长度为32个字符/数字。

正如GregWire所说,您可以通过以下方式使用uniqueid()函数生成字母数字随机数:
printf(“uniqid():%s\r\n”,uniqid());

通常最好有某种类型的字符串/文本类,允许您以可重用的方式执行此操作,而不仅仅是编写一次性函数/内联编写代码

<?php

class Text
{
    /**
     * Generate a random string
     * @param   string   $type     A type of pool, or a string of characters to use as the pool
     * @param   integer  $length   Length of string to return
     * @return  string
     */
    public static function random($type = 'alnum', $length = 8)
    {
        $pools = array(
            'alnum'    => '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
            'alpha'    => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
            'hexdec'   => '0123456789abcdef',
            'numeric'  => '0123456789',
            'nozero'   => '123456789',
            'distinct' => '2345679ACDEFHJKLMNPRSTUVWXYZ'
        );

        // Use type as a pool if it isn't preconfigured
        $pool = isset($pools[$type]) ? $pools[$type] : $type;

        $pool = str_split($pool, 1);

        $max  = count($pool) - 1;

        $str = '';

        for ($i = 0; $i < $length; $i++)
        {
            $str .= $pool[mt_rand(0, $max)];
        }

        return $str;

    }

}

您可能正在寻找uniqid()函数。您的代码片段实际上与随机数没有任何关系,它只是输出一个从1到10000的数字序列。您能解释一下您真正想要做什么吗?我可以在数字中随机添加字母吗?为什么不简单地编写
$pin.=$str[$rand]
?最好使用
mb_substr
来允许多字节字符。@stick:use as$myString=rand_str(12,“abcdef”);第一个参数是你想要多少个随机字符,第二个参数是应该包含哪些字符。@Gumbo:你说得对,那会更好,thanks@stick您对PHP有多少经验?如果长度设置为0怎么办?为了更好地实现这一点,您应该添加多字节支持并使用子字符串,而不是数组索引找到角色…但这会给你一个好的开始