本文实例讲述了php生成随机数/生成随机字符串的方法。分享给大家供大家参考,具体如下:
有时候我们的项目需要生成随机数,但是又不想那么麻烦,那么我们可以使用下面这5种方法生成。
第一种:mt_rand()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<?php
function GetRandStr( $length ){
//字符组合
$str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' ;
$len = strlen ( $str )-1;
$randstr = '' ;
for ( $i =0; $i < $length ; $i ++) {
$num =mt_rand(0, $len );
$randstr .= $str [ $num ];
}
return $randstr ;
}
//传入长度
$number = GetRandStr(6);
echo $number ;
?>
|
第二种:array_rand()数组
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<?php
function make_password( $length )
{
// 密码字符集,可任意添加你需要的字符
$str = array ( 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h' ,
'i' , 'j' , 'k' , 'l' , 'm' , 'n' , 'o' , 'p' , 'q' , 'r' , 's' ,
't' , 'u' , 'v' , 'w' , 'x' , 'y' , 'z' , 'A' , 'B' , 'C' , 'D' ,
'E' , 'F' , 'G' , 'H' , 'I' , 'J' , 'K' , 'L' , 'M' , 'N' , 'O' ,
'P' , 'Q' , 'R' , 'S' , 'T' , 'U' , 'V' , 'W' , 'X' , 'Y' , 'Z' ,
'0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' );
// 在 $str 中随机取 $length 个数组元素键名
$keys = array_rand ( $str , $length );
$password = '' ;
for ( $i = 0; $i < $length ; $i ++)
{
// 将 $length 个数组元素连接成字符串
$password .= $str [ $keys [ $i ]];
}
return $password ;
}
echo make_password(6);
?>
|
第三种:把字符串打乱,然后返回其中的一小截
1
2
3
4
5
6
7
8
9
|
<?php
function getrandstr( $length ){
$str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890' ;
$randStr = str_shuffle ( $str ); //打乱字符串
$rands = substr ( $randStr ,0, $length ); //substr(string,start,length);返回字符串的一部分
return $rands ;
}
echo getrandstr(6);
?>
|
第四种:返回任意随机数
1
2
3
4
|
<?php
//返回1000-9999其中的一个随机数
echo rand(1000,9999);
?>
|
第五种:对时间戳进行MD5加密,截取其中一部分
1
2
3
4
5
6
7
8
|
<?php
function token( $length ){
$str = md5(time());
$token = substr ( $str ,5, $length );
return $token ;
}
echo token(6);
?>
|
5种方法,任你选择,当然还有很多方法,例如多个字符串进行拼接,最后做md5加密或SHA1加密,然后返回字符串,这种比较普遍用于token验证或签名验证。
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://segmentfault.com/a/1190000022718001