我想生成一个具有以下模式的随机密码:
资本,小,数字,短划线,资本,小数,数字,特殊字符。
示例:
Ab1-Cd2$
我已将所有特殊字符放在我随机选择的数组中,所以我找到了那个部分。但我不知道如何做其他部分。有什么建议吗?
答案 0 :(得分:4)
这不是最好的方法,但这会起作用
<?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;
您可以阅读我在这里使用的功能
会产生如下结果:
Tg8-Im1$
Yj3-Xl3@
Cr1-Lv1@
我认为这是你的要求
如果您需要更多帮助,请与我们联系。
答案 1 :(得分:1)
将chr()
与随机ascii值一起使用,超出A-Z,a-b,0-9的范围。
这里:http://php.net/manual/en/function.chr.php
这里的ASCII表:http://www.asciitable.com/
示例:a-z从97到122。
答案 2 :(得分:1)
您无需在此处使用 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;
修改强>
如果您需要某种在范围中的值,那么有一个巧妙的技巧。您可以使用range()功能。
例如,这是函数,加上chr()函数来获取ASCII字符(从0x20到0x7E)。
$chars = range(chr(32), chr(126));