php - вопрос о регулярном выражении - PullRequest
0 голосов
/ 01 августа 2011

Я хочу сгенерировать случайный пароль, который имеет следующий шаблон:

Капитал, маленький, номер, тире, капитал, маленький, номер, специальный символ.

Пример:

Ab1-Cd2$

Я поместил все специальные символы в массив, который я выбрал случайным образом, поэтому я понял эту часть. Но я понятия не имею, как сделать другую часть. Любое предложение?

Ответы [ 3 ]

4 голосов
/ 01 августа 2011

это не лучший способ, но это будет работать

<?php

    $capital    = range ('A','Z');
    $small      = range ('a','z');
    $number     = range ('0','9');
    $special    = array ("#","$","@");

    $password   =   $capital[array_rand($capital)] . 
                    $small[array_rand($small)] . 
                    $number[array_rand($number)] . 
                    "-" . 
                    $capital[array_rand($capital)] . 
                    $small[array_rand($small)] . 
                    $number[array_rand($number)] . 
                    $special[array_rand($special)];

    print $password;

Вы можете прочитать о функциях, которые я использовал здесь

array_rand

диапазон

Будет выдавать результаты вроде:

Tg8-Im1$
Yj3-Xl3@
Cr1-Lv1@

что, я думаю, ваше требование

Пожалуйста, дайте мне знать, если вам нужна дополнительная помощь по этому вопросу.

1 голос
/ 01 августа 2011

Вам не нужно использовать regex здесь. Вам нужен массив со значениями всех возможных символов, которые могут появиться в пароле. Затем вы просто перебираете этот массив и берете из него случайный ключ.

$chars = array('a', 'b', 'c'); // For example.
$length = 6;

$password = '';
$count = count($chars) - 1;
for ($i = 0; $i < $length; ++$i) {
    $password .= $chars[mt_rand(0, $count)];
}

echo $password;

Edit:

Есть хитрый трюк, если вам нужны значения, которые как-то находятся в диапазоне . Вы можете использовать функцию range () .

Например, вот эта функция, плюс, chr () функция для получения символов ASCII (от 0x20 до 0x7E).

$chars = range(chr(32), chr(126));
1 голос
/ 01 августа 2011

Используйте chr() вместе со случайным значением ASCII вне диапазона AZ, ab, 0-9.

chr здесь: http://php.net/manual/en/function.chr.php

Таблица ASCII здесь: http://www.asciitable.com/

Пример: az от 97 до 122.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...