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)
- 最新评论