php专区

 首页 > php专区 > PHP应用 > php函数大全 > php随机生成字符串一些方法总结 - php函数

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

分享到:
【字体:大 中 小】
导读:
          前面有讲过生成随机密码,下面我再来给大家介绍一些常用的生成随机字符串的函数吧,这些都是我们自定义的函数,当然也有系统自带函数了,不过都...

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

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

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. } 
  20. $str = genRandomString(25); 
  21. $str .= "
    " >
    ; 
  22. $str .= genRandomString(25); 
  23. $str .= "
    " >
    ; 
  24. $str .= genRandomString(25); 
  25. $str .= "

    " > >
    ; 
  26. echo $str; 
  27. ?> 

程序输出如下:

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; 
  27. } 

另一个小实例:

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

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

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

代码如下:

  1. function make_password( $length = 8 ) 
  2. { 
  3.     // 密码字符集,可任意添加你需要的字符 
  4.     $chars = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',  
  5.     'i', 'j', 'k', 'l','m', 'n', 'o', 'p', 'q', 'r', 's',  
  6.     't', 'u', 'v', 'w', 'x', 'y','z', 'A', 'B', 'C', 'D',  
  7.     'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L','M', 'N', 'O',  
  8.     'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y','Z',  
  9.     '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '!',  
  10.     '@','#', '$', '%', '^', '&', '*', '(', ')', '-', '_',  
  11.     '[', ']', '{', '}', '<', '>', '~', '`', '+', '=', ',',  
  12.     '.', ';', ':', '/', '?', '|'); 
  13.     // 在 $chars 中随机取 $length 个数组元素键名 
  14.     $keys = array_rand($chars, $length); 
  15.     $password = ''; 
  16.     for($i = 0; $i < $length; $i++) 
  17.     { 
  18.         // 将 $length 个数组元素连接成字符串 
  19.         $password .= $chars[$keys[$i]]; 
  20.     } 
  21.     return $password; 
  22. }
分享到:
PHP字符截取函数,兼容各类gbk,utf-8编码 ...
PHP字符截取函数,兼容各类gbk,utf-8编码 在PHP中字符截取函数substr只能截取全英文才不会出现乱码如果里面有中文肯定是无法截取的,下面小编来给大家介绍两个兼容各类gbk,utf-8编码字符串截取函数,实例代码如下: function CsubStrPro($str, $start, $length, $charset = "utf-8",...
php检查验证IP为有效IP地址函数 - php函...
php检查验证IP为有效IP地址函数 在php5.2之前如果我们要验证IP地址是否有效我们需要使用正则来验证这样只是IP地址是不是合法的,如果要有效我们需要调用ping来操作,但php5.2.0之后,有专门的函数来做这个判断了,下面我来总结一下这些函数. 判断是否是合法IP,代码如下: if(filter_var($i...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……