/**
* 生成随机字符串
* @param integer $length 长度
* @param boolean $int 是否纯数字
* @param integer $level 字符串强度[1-4]
* @return [type] [description]
*/
if (!function_exists('randoms')) {
function randoms($length=6,$int=false,$level=2) {
$character = [
'number' => '0123456789',
'letter' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'symbol' => '!@#$%^&*()-_[]{}<>~+=/?|',
'filter' => '0OIl1'
];
// 根据条件设置随机字符范围
if ($int) {
// 纯数字
$chars = $character['number'];
}else{
switch ($level) {
case 1:
// 大写字母
$chars = $character['letter'];
break;
case 2:
// 数字+大写字母
$chars = $character['number'].$character['letter'];
break;
case 3:
// 数字+大写字母+小写字母
$chars = $character['number'].$character['letter'].strtolower($character['letter']);
break;
case 4:
// 数字+大写字母+小写字母+符号
$chars = $character['number'].$character['letter'].strtolower($character['letter']).$character['symbol'];
break;
default:
// 数字+大写字母
$chars = $character['number'].$character['letter'];
break;
}
}
// 过滤指定字符
if (!empty($character['filter']) && $level==3 || $level==4) {
$filter = str_split($character['filter']);
foreach ($filter as $key => $value) {
$chars = preg_replace('/'.$value.'/','',$chars);
}
}
// 开始随机
$string = '';
for($i=0;$i<$length;$i++) {
$string .= $chars[mt_rand(0,strlen($chars)-1)];
}
return $string;
}
}