快捷搜索:   nginx

PHP函数生成随机字符串 生成随机数的几个方法

对于使用PHP做生成用户重置密码用的验证码的用途,就需要用到随机生成一串字符串,并邮件发给用户,这个随机生成字符串的方法有好几种,详细说明如下:


方法一、mt_rand+chr函数的用法

1、在30 – 130中生成一个随机整数,如35。

2、将35转换成对应的ASCII码字符,如35对应#。

3、重复以上1、2步骤n次,连接成n位的密码。

该算法主要用到了两个函数,mt_rand ( int $min , int $max )函数用于生成随机整数,其中 $min – $max 为 ASCII 码的范围,这里取 33 -126 ,可以根据需要调整范围,如ASCII码表中 97 – 122 位对应 a – z 的英文字母,具体可参考 ASCII码表; chr ( int $ascii )函数用于将对应整数 $ascii 转换成对应的字符。

function create_password($pw_length =  
{ 
$randpwd = ”; 
for ($i = 0; $i < $pw_length; $i++) 
{ 
$randpwd .= chr(mt_rand(30, 130)); 
} 
return $randpwd; 
} 
// 调用该函数,传递长度参数$pw_length = 6 
echo create_password(6);

方法二 for循环+substr
1、预置一个的字符串 $chars ,包括 a – z,A – Z,0 – 9,以及一些特殊字符。

2、在 $chars 字符串中随机取一个字符。

3、重复第二步n次,可得长度为n的密码。

function generate_password( $length = 8 ) { 
// 密码字符集,可任意添加你需要的字符 
$chars = ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_ []{}<>~`+=,.;:/?|'; 
$password = ”; 
for ( $i = 0; $i < $length; $i++ ) 
{ 
// 这里提供两种字符获取方式 
// 第一种是使用 substr 截取$chars中的任意一位字符; 
// 第二种是取字符数组 $chars 的任意元素 
// $password .= substr($chars, mt_rand(0, strlen($chars) – 1), 1); 
$password .= $chars[ mt_rand(0, strlen($chars) - 1) ]; 
} 
return $password; 
}

方法三 str_shuffle()函数与substr()函数应用

1、str_shuffle()函数随机打乱字符串中的所有字符

以下是str_shuffle()函数的两个示例:

示例一:随机生成长度为10位数字的字符串。

$str="QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm";
str_shuffle($str);
$name=substr(str_shuffle($str),26,10);
echo $name;


示例二:生成了BNXB开头的12位字符串。

$str="QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm";
$str='BNXB'.substr(str_shuffle($str),5,8);
echo $str;

运行结果:BNXBA3DkiRvq


顶(5)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论