避免生成密码代码

时间:2016-01-13 15:19:30

标签: php

如果我们连续不断地运行代码,有时我们发现它会在密码中生成一些不应该得到的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;

1 个答案:

答案 0 :(得分:2)

将return语句替换为以下内容:

  return trim(substr($password, 0, $length));

用于所有空格使用:

return preg_replace('/\s+/', '', substr($password, 0, $length));

trim()从字符串中删除空格。但是代码的问题在于st变量的$cons中有一个空格。

PhP trim Function