/*
*
* $length 字符串长度
*/
function random_str($length) {
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMnopQRSTUVWXYZ0123456789';
$str = '';
for($i = 0; $i < $length; $i++)
{
// 这里提供两种字符获取方式
// 第一种是使用 substr 截取$chars中的任意一位字符;
// 第二种是取字符数组 $chars 的任意元素
$str .= substr($chars,mt_rand(0,strlen($chars) - 1),1);
// $str .= $chars[mt_rand(0,strlen($chars) - 1)];
}
return $str;
}
了解原理后可以扩展一下:
/**
*
* @param int $length 长度
* @param int $type 类型,1 纯数字,2 纯小写字母,3 纯大写字母,4 数字和小写字母,5 数字和大写字母,6 大小写字母,7 数字和大小写字母
*/
function random($length = 6,$type = 1)
{
// 取字符集数组
$number = range(0,9);
$lowerLetter = range('a','z');
$upperLetter = range('A','Z');
// 根据type合并字符集
if ($type == 1) {
$charset = $number;
} elseif ($type == 2) {
$charset = $lowerLetter;
} elseif ($type == 3) {
$charset = $upperLetter;
} elseif ($type == 4) {
$charset = array_merge($number,$lowerLetter);
} elseif ($type == 5) {
$charset = array_merge($number,$upperLetter);
} elseif ($type == 6) {
$charset = array_merge($lowerLetter,$upperLetter);
} elseif ($type == 7) {
$charset = array_merge($number,$lowerLetter,$upperLetter);
} else {
$charset = $number;
}
$str = '';
// 生成字符串
for ($i = 0; $i < $length; $i++) {
$str .= $charset[mt_rand(0,count($charset) - 1)];
// 验证规则
if ($type == 4 && strlen($str) >= 2) {
if (!preg_match('/d+/',$str) || !preg_match('/[a-z]+/',$str)) {
$str = substr($str,-1);
$i = $i - 1;
}
}
if ($type == 5 && strlen($str) >= 2) {
if (!preg_match('/d+/',$str) || !preg_match('/[A-Z]+/',-1);
$i = $i - 1;
}
}
if ($type == 6 && strlen($str) >= 2) {
if (!preg_match('/[a-z]+/',-1);
$i = $i - 1;
}
}
if ($type == 7 && strlen($str) >= 3) {
if (!preg_match('/d+/',-2);
$i = $i - 2;
}
}
}
return $str;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。