前面有讲过生成随机密码,下面我再来给大家介绍一些常用的生成随机字符串的函数吧,这些都是我们自定义的函数,当然也有系统自带函数了,不过都比较简单了。
mt_rand函数,实例例子代码如下,在本例中,我们会返回一些随机数:
echo(mt_rand());
echo(mt_rand());
echo(mt_rand(10,100));
?>
//输出类似:
3150906288
513289678
35
下面我们来看看mt_rand函数的实例吧,代码如下:
functionroll () {
returnmt_rand(1,6);
}
echoroll();
functionroll ($sides) {
returnmt_rand(1,$sides);
}
echoroll(6);// roll a six-sided die
echoroll(10);// roll a ten-sided die
echoroll(20);// roll a twenty-sided die
上面都只能生成简单的纯数字,不能是字母或数字与字母的,下面我们需用到自定义函数了,代码如下:
functiongenRandomString($len) {
$chars=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"
);
$charsLen=count($chars) - 1;
shuffle($chars);// 将数组打乱
$output="";
for($i=0;$i
$output.=$chars[mt_rand(0,$charsLen)];
}
return$output;
}
$str= genRandomString(25);
$str.="
";
$str.= genRandomString(25);
$str.="
";
$str.= genRandomString(25);
$str.="
";
echo$str;
?>
程序输出如下:
DmLVAmDkEJz8wHXRCNwzvANlB
BILZSA19YyuSVcR17KrrZsOKO
inlWlQF0GSabN3l589y9s16Gg
下面是一个小实例,默认生成的随机字符串长度为5,生成的字符串包含:数字+大写字母,函数功能:
1、生成指定长度的随机字符串
2、灵活选择生成的随机字符串的复杂度
代码如下:
/**
+----------------------------------------------------------
* 生成随机字符串
+----------------------------------------------------------
* @param int $length 要生成的随机字符串长度
* @param string $type 随机码类型:0,数字+大写字母;1,数字;2,小写字母;3,大写字母;4,特殊字符;-1,数字+大小写字母+特殊字符
+----------------------------------------------------------
* @return string
+----------------------------------------------------------
*/
functionrandCode($length= 5,$type= 0) {
$arr=array(1 =>"0123456789", 2 =>"abcdefghijklmnopqrstuvwxyz", 3 =>"ABCDEFGHIJKLMNOPQRSTUVWXYZ", 4 =>"~@#$%^&*(){}[]|");
if($type== 0) {
array_pop($arr);
$string= implode(",",$arr);
} elseif($type=="-1") {
$string= implode(",",$arr);
} else{
$string=$arr[$type];
}
$count=strlen($string) - 1;
for($i= 0;$i
$str[$i] =$string[rand(0,$count)];
$code.=$str[$i];
}
return$code;
}
另一个小实例:
1、预置一个的字符数组 $chars,包括 a – z,A – Z,0 – 9,以及一些特殊字符
2、通过array_rand()从数组 $chars 中随机选出 $length 个元素.
3、根据已获取的键名数组 $keys,从数组 $chars 取出字符拼接字符串。该方法的缺点是相同的字符不会重复取.
代码如下:
functionmake_password($length= 8 )
{
// 密码字符集,可任意添加你需要的字符
$chars=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','!',
'@','#','$','%','^','&','*','(',')','-','_',
'[',']','{','}','','~','`','+','=',',',
'.',';',':','/','?','|');
// 在 $chars 中随机取 $length 个数组元素键名
$keys=array_rand($chars,$length);
$password='';
for($i= 0;$i
{
// 将 $length 个数组元素连接成字符串
$password.=$chars[$keys[$i]];
}
return$password;
}
(责任编辑:admin)