欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP中生成随机字符串,数字+大小写字母随机组合

程序员文章站 2022-10-08 20:27:04
简单的生成随机字符串: 了解原理后可以扩展一下: ......

 

简单的生成随机字符串:

    /*
     *  生成随机字符串
     *
     *   $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, 0, -1);
                $i = $i - 1;
            }
        }
        if ($type == 5 && strlen($str) >= 2) {
            if (!preg_match('/\d+/', $str) || !preg_match('/[a-z]+/', $str)) {
                $str = substr($str, 0, -1);
                $i = $i - 1;
            }
        }
        if ($type == 6 && strlen($str) >= 2) {
            if (!preg_match('/[a-z]+/', $str) || !preg_match('/[a-z]+/', $str)) {
                $str = substr($str, 0, -1);
                $i = $i - 1;
            }
        }
        if ($type == 7 && strlen($str) >= 3) {
            if (!preg_match('/\d+/', $str) || !preg_match('/[a-z]+/', $str) || !preg_match('/[a-z]+/', $str)) {
                $str = substr($str, 0, -2);
                $i = $i - 2;
            }
        }
    }
    return $str;
}