我想知道如何使用PHP生成随机数字和字母
如何生成混合在一起的随机数字和字母 这是我的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++) {
$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怎么办?为了更好地实现这一点,您应该添加多字节支持并使用子字符串,而不是数组索引找到角色…但这会给你一个好的开始