php随机生成字符串一些方法总结
前面有讲过生成随机密码,下面我再来给大家介绍一些常用的生成随机字符串的函数吧,这些都是我们自定义的函数,当然也有系统自带函数了,不过都比较简单了。
mt_rand函数,实例 例子代码如下,在本例中,我们会返回一些随机数:
echo (mt_rand()); echo (mt_rand()); echo (mt_rand(10,100)); ?> //输出类似: 3150906288 513289678 35下面我们来看看mt_rand函数的实例 吧,代码如下:
function roll () { return mt_rand(1,6); } echo roll(); function roll ( $sides ) { return mt_rand(1, $sides ); } echo roll(6); // roll a six-sided die echo roll(10); // roll a ten-sided die echo roll(20); // roll a twenty-sided die上面都只能生成简单的纯数字,不能是字母或数字与字母的,下面我们需用到自定义函数了,代码如下:
function genRandomString( $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 < $len ; $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 +---------------------------------------------------------- */ function randCode( $length = 5, $type = 0) { $arr = array (1 => "0123456789" , 2 => "abcdefghijklmnopqrstuvwxyz" , 3 => "ABCDEFGHIJKLMNOPQRSTUVWXYZ" , 4 => "~@#$%^&*(){}[]|" ); if ( $type == 0) { array_pop ( $arr ); $string = implode( "," , $arr ); } else if ( $type == "-1" ) { $string = implode( "," , $arr ); } else { $string = $arr [ $type ]; } $count = strlen ( $string ) - 1; for ( $i = 0; $i < $length ; $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 取出字符拼接字符串。该方法的缺点是相同的字符不会重复取.
代码如下:
function make_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 ; $i ++) { // 将 $length 个数组元素连接成字符串 $password .= $chars [ $keys [ $i ]]; } return $password ; }查看更多关于php随机生成字符串一些方法总结 - php函数的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did30683