通常情况下,当我们要生成一个随机字符串时,总是先创建一个字符池,然后用一个循环和mt_rand()或rand()生成php随机数,从字符池中随机选取字符,最后拼凑出需要的长度,代码如下:
1 2 3 4 5 6 7 8 9 10 11
| <?php function randomkeys($length){ $pattern='1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLOMNOPQRSTUVWXYZ,./<>?;#:@~[]{}-_=+)(*&^%___FCKpd___0pound;"!'; $key=''; for($i=0;$i<$length;$i++){ $key.=$pattern{mt_rand(0,35)}; } return $key; } echo randomkeys(8); ?>
|
这个php随机函数能生成XC*=z~7L
这样的字符串,够随机!
现在介绍另一种用PHP生成随机数的方法:利用chr()函数,省去创建字符池的步骤,代码如下:
1 2 3 4 5 6 7 8 9 10
| <?php function randomkeys($length){ $output=''; for($a=0;$a<$length;$a++){ $output.=chr(mt_rand(33,126)); } return $output; } echo randomkeys(8); ?>
|
mt_rand()生成一个介于33到126之间的php随机数,然后用chr()函数转化成字符。查看ascii码表就会发现,33到126代表的正是第一个函数中字符池里的所有字符。第二个函数和第一个函数功能相同,而且更简洁。