PHPで英数字と記号が混在したパスワードを生成する関数。アルファベットの大文字と小文字、数字、記号で生成。
function createPassword( $len = 8 ){ $pwdStrings = array( "sletter" => range( 'a', 'z' ), "cletter" => range( 'A', 'Z' ), "number" => range( '0', '9' ), "symbol" => array_merge( range( '!', '/' ), range( ':', '?' ), range( '{', '~') ) ); $pwd = array(); while( count( $pwd ) < $len ){ // 英(大小)数字と記号を必ず入れる if( count( $pwd ) < 4 ){ $key = key( $pwdStrings ); next( $pwdStrings ); // 残りはランダムに取得 } else { $key = array_rand( $pwdStrings ); } $pwd[] = $pwdStrings[$key][array_rand( $pwdStrings[$key] )]; } // 生成したパスワードの順番をランダムに並び替え shuffle( $pwd ); $pwdTxt = implode( $pwd ); return( $pwdTxt ); }
参考元はこちらのページ。