2017-01-07 66 views
-2

正則表達式如何創建用於至少一個字母,一個數字和一個特殊字符,並在PHP中使用正則表達式的字符串是8的最小長度密碼生成滿足在PHP

+0

http://stackoverflow.com/questions/19605150/regex-for-password-must-be-包含至少8個字符 - 最少1個數字和機器人 –

+1

@ABCatella問題是如何生成密碼,而不是如何驗證。 – Xorifelse

回答

0

正則表達式是有用的動態密碼匹配字符串,而不是創建它們。

您可以使用此代碼來生成一個密碼符合您的要求:

<?php 
// Generate a password of length = Max(8, $len) 
function generatePassword($len) 
{ 
    $lower = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'); 
    $upper = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'); 
    $specials = array('!','"','#','$','%','&','\'','(',')','*','+',',','-','.','/',':',';','<','=','>','?','@','[','\\',']','^','_','`','{','|','}','~'); 
    $digits = array('0','1','2','3','4','5','6','7','8','9'); 
    $all = array($lower, $upper, $specials, $digits); 

    $pwd = $lower[array_rand($lower, 1)]; 
    $pwd = $pwd . $upper[array_rand($upper, 1)]; 
    $pwd = $pwd . $specials[array_rand($specials, 1)]; 
    $pwd = $pwd . $digits[array_rand($digits, 1)]; 

    for($i = strlen($pwd); $i < max(8, $len); $i++) 
    { 
     $temp = $all[array_rand($all, 1)]; 
     $pwd = $pwd . $temp[array_rand($temp, 1)]; 
    } 
    return str_shuffle($pwd); 
} 

echo generatePassword(8); 

See it live