首页 > 语言 > PHP > 正文

php随机生成字符串一些方法总结

2024-09-04 11:48:05
字体:
来源:转载
供稿:网友

前面有讲过生成随机密码,下面我再来给大家介绍一些常用的生成随机字符串的函数吧,这些都是我们自定义的函数,当然也有系统自带函数了,不过都比较简单了。

mt_rand函数,实例例子代码如下,在本例中,我们会返回一些随机数:

  1. echo(mt_rand()); 
  2. echo(mt_rand()); 
  3. echo(mt_rand(10,100)); 
  4. ?> 
  5. //输出类似: 
  6. 3150906288 
  7. 513289678 
  8. 35 

下面我们来看看mt_rand函数的实例吧,代码如下:

  1. function roll () {  
  2.   return mt_rand(1,6);  
  3.   } 
  4. echo roll(); 
  5. function roll ($sides) {  
  6.   return mt_rand(1,$sides); 
  7. }  
  8.   echo roll(6); // roll a six-sided die  
  9.   echo roll(10); // roll a ten-sided die  
  10.   echo roll(20); // roll a twenty-sided die 

上面都只能生成简单的纯数字,不能是字母或数字与字母的,下面我们需用到自定义函数了,代码如下:

  1. function genRandomString($len) { 
  2.     $chars = array
  3.         "a""b""c""d""e""f""g""h""i""j""k"
  4.         "l""m""n""o""p""q""r""s""t""u""v"
  5.         "w""x""y""z""A""B""C""D""E""F""G"
  6.         "H""I""J""K""L""M""N""O""P""Q""R"
  7.         "S""T""U""V""W""X""Y""Z""0""1""2"
  8.         "3""4""5""6""7""8""9"  
  9.     ); 
  10.     $charsLen = count($chars) - 1; 
  11.     shuffle($chars); // 将数组打乱 
  12.      
  13.     $output = ""
  14.     for ($i=0; $i<$len$i++) { 
  15.         $output .= $chars[mt_rand(0, $charsLen)]; 
  16.     } 
  17.      
  18.     return $output
  19. $str = genRandomString(25); 
  20. $str .= ""
  21. $str .= genRandomString(25); 
  22. $str .= ""
  23. $str .= genRandomString(25); 
  24. $str .= ""
  25. echo $str
  26. ?> 

程序输出如下:

DmLVAmDkEJz8wHXRCNwzvANlB

BILZSA19YyuSVcR17KrrZsOKO

inlWlQF0GSabN3l589y9s16Gg

下面是一个小实例,默认生成的随机字符串长度为5,生成的字符串包含:数字+大写字母,函数功能:

1、生成指定长度的随机字符串

2、灵活选择生成的随机字符串的复杂度

代码如下:

  1. /** 
  2.   +---------------------------------------------------------- 
  3.  * 生成随机字符串 
  4.   +---------------------------------------------------------- 
  5.  * @param int       $length  要生成的随机字符串长度 
  6.  * @param string    $type    随机码类型:0,数字+大写字母;1,数字;2,小写字母;3,大写字母;4,特殊字符;-1,数字+大小写字母+特殊字符 
  7.   +---------------------------------------------------------- 
  8.  * @return string 
  9.   +---------------------------------------------------------- 
  10.  */ 
  11. function randCode($length = 5, $type = 0) { 
  12.     $arr = array(1 => "0123456789", 2 => "abcdefghijklmnopqrstuvwxyz", 3 => "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 4 => "~@#$%^&*(){}[]|"); 
  13.     if ($type == 0) { 
  14.         array_pop($arr); 
  15.         $string = implode(","$arr); 
  16.     } else if ($type == "-1") { 
  17.         $string = implode(","$arr); 
  18.     } else { 
  19.         $string = $arr[$type]; 
  20.     } 
  21.     $count = strlen($string) - 1; 
  22.     for ($i = 0; $i < $length$i++) { 
  23.         $str[$i] = $string[rand(0, $count)]; 
  24.         $code .= $str[$i]; 
  25.     } 
  26.     return $code

另一个小实例:

1、预置一个的字符数组 $chars,包括 a – z,A – Z,0 – 9,以及一些特殊字符

2、通过array_rand()从数组 $chars 中随机选出 $length 个元素.

3、根据已获取的键名数组 $keys,从数组 $chars 取出字符拼接字符串。该方法的缺点是相同的字符不会重复取.

代码如下:

  1. function make_password( $length = 8 ) 
  2.     // 密码字符集,可任意添加你需要的字符 
  3.     $chars = array('a''b''c''d''e''f''g''h',  
  4.     'i''j''k''l','m''n''o''p''q''r''s',  
  5.     't''u''v''w''x''y','z''A''B''C''D',  
  6.     'E''F''G''H''I''J''K''L','M''N''O',  
  7.     'P''Q''R''S''T''U''V''W''X''Y','Z',  
  8.     '0''1''2''3''4''5''6''7''8''9''!',  
  9.     '@','#''$''%''^''&''*''('')''-''_',  
  10.     '['']''{''}''<''>''~''`''+''='',',  
  11.     '.'';'':''/''?''|'); 
  12.     // 在 $chars 中随机取 $length 个数组元素键名 
  13.     $keys = array_rand($chars$length); 
  14.     $password = ''
  15.     for($i = 0; $i < $length$i++) 
  16.     { 
  17.         // 将 $length 个数组元素连接成字符串 
  18.         $password .= $chars[$keys[$i]]; 
  19.     } 
  20.     return $password
  21. }

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表