php生成随机字符串的几种方法

方法1

1
2
3
4
5
6
7
function make_password( $length = '8'){
$range = array_merge( range('a', 'z') , range('A', 'Z') , range('0','9'));
shuffle($range);
$range = array_slice($range,0, $length);
$password = implode('' , $range);
return $password;
}

评价:看起来比较舒服,可以根据需求 自定义字符集,缺点是效率低。

方法2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function generate_password( $length = 8 ) {
// 密码字符集,可任意添加你需要的字符
$chars = '[email protected]#$%^&*()-_ []{}<>~`+=,.;:/?|';
$password = '';
$chars_max_index = strlen($chars)-1;
for ( $i = 0; $i < $length; $i++ )
{
// 这里提供两种字符获取方式
// 第一种是使用 substr 截取$chars中的任意一位字符;
// 第二种是取字符数组 $chars 的任意元素
// $password .= substr($chars, mt_rand(0, $chars_max_index ), 1);
$password .= $chars[ mt_rand(0, $chars_max_index ) ];
}
return $password;
}

评价:高效,因为仅使用了一个mt_rand()函数;可以根据需求 自定义字符集,不过看起来有点乱。

方法3

1
2
3
4
5
6
7
8
9
function create_password($pw_length = 8)
{
$randpwd = '';
for ($i = 0; $i < $pw_length; $i++)
{
$randpwd .= chr(mt_rand(33, 126));
}
return $randpwd;
}

评价:非常高效,利用ASCII码和mt_rand()chr()完成随机字符串;可以根据需求 自定义字符集。

方法4

1
2
3
4
5
function get_password( $length = 8 )
{
$str = substr(md5(time()), 0, 6);
return $str;
}

评价:尼玛。