$maxLen || !$word) $word = $words[array_rand($words, 1)]; if (rand(0,1)) $word = ucfirst($word); for ($i = 0; $i < $maxLen - strlen($word); $i++) rand(0,1) ? $opener .= rand(2,9) : $closer .= rand(2,9); return "{$opener}{$word}{$closer}"; } ?> Demo: for ($i = 0; $i < 20; $i++) { echo generatePassword() . " "; } Produces: 6Above43 79Above7 absence4 2Above85 58about5 59Above3 4absence Absence3 6about44 3Absence Above587 Above994 8Above56 Above259 699above 4Above88 absence3 absence3 About322 267About