如果我们连续不断地运行代码,有时我们发现它会在密码中生成一些不应该得到的SPACE。
有人可以告诉我们如何避免从下面生成的密码代码中删除SPACE字符:
以下是代码:
function generateRandomPassword($length) {
srand((double)microtime()*1000000);
$password = "";
$vowels = array("a", "e", "i", "o", "u");
$cons = array("b", "c", "d", "g", "h", "j", "k", "l", "m", "n", "p", "r",
"s", "t", "u", "v", "w", "tr", "cr", "br", "fr", "th", "dr", "ch", "ph", "wr", "
st", "sp", "sw", "pr", "sl", "cl");
$num_vowels = count($vowels);
$num_cons = count($cons);
for($i = 0; $i < $length; $i++) {
$c = $cons[rand(0, $num_cons - 1)];
if (rand(0,1)) $c = strtoupper($c);
$v = $vowels[rand(0, $num_vowels - 1)];
if (rand(0,1)) $v = strtoupper($v);
$password .= $c . $v;
if (rand(0,4) == 0) $password .= rand(0,9);
}
return substr($password, 0, $length);
}
$pwd = generateRandomPassword(12);
echo $pwd;
答案 0 :(得分:2)
将return语句替换为以下内容:
return trim(substr($password, 0, $length));
用于所有空格使用:
return preg_replace('/\s+/', '', substr($password, 0, $length));
trim()
从字符串中删除空格。但是代码的问题在于st
变量的$cons
中有一个空格。