如果我们连续运行下面的代码,有时我们会发现它在密码中生成了一些不应该得到的空格。
有人能告诉我们如何避免下面生成的密码代码中的空格字符吗:
这是代码:
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;
用以下内容替换return语句:
return trim(substr($password, 0, $length));
对于所有空白使用:
return preg_replace('/'s+/', '', substr($password, 0, $length));
trim()
从字符串中去除空白。但是代码的问题是在$cons
变量的st
中有一个空白。
PhP微调功能