/** |
+---------------------------------------------------------- |
* 产生随机字串, 可用来自动生成密码,验证码,表单令牌等 |
* 默认长度6位 字母和数字混合 支持中文 |
+---------------------------------------------------------- |
* @param string $len 长度 |
* @param string $type 字串类型 |
* 0 字母 1 数字 其它 混合 |
* @param string $addChars 额外字符 |
+---------------------------------------------------------- |
* @return string |
+---------------------------------------------------------- |
*/ |
function rand_string( $len = 6, $type = '' , $addChars = '' ) { |
$str = '' ; |
switch ( $type ) { |
case 0 : |
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' . $addChars ; |
break ; |
case 1 : |
$chars = str_repeat ( '0123456789' , 3); |
break ; |
case 2 : |
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' . $addChars ; |
break ; |
case 3 : |
$chars = 'abcdefghijklmnopqrstuvwxyz' . $addChars ; |
break ; |
default : |
// 默认去掉了容易混淆的字符oOLl和数字01,要添加请使用addChars参数 |
$chars = 'ABCDEFGHIJKMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789' . $addChars ; |
break ; |
} |
if ( $len > 10) { //位数过长重复字符串一定次数 |
$chars = $type == 1 ? str_repeat ( $chars , $len ) : str_repeat ( $chars , 5); |
} |
if ( $type != 4) { |
$chars = str_shuffle ( $chars ); |
$str = substr ( $chars , 0, $len ); |
} else { |
// 中文随机字 |
for ( $i = 0; $i < $len ; $i ++) { |
$str .= msubstr( $chars , floor (mt_rand(0, mb_strlen( $chars , 'utf-8' ) - 1)), 1); |
} |
} |
return $str ; |
} |