PHP中生成隨機字符串,數字+大小寫字母隨機組合


 

簡單的生成隨機字符串:

    /*
     *  生成隨機字符串
     *
     *   $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;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM