public static function generatePassword($length = 6, $uppercaseAllowed = true, $lowercaseAllowed = true)
{
// list of allowed vowels and vowel sounds
$vowels = array('a', 'e', 'i', 'u', 'ae', 'ea');
// list of allowed consonants and consonant sounds
$consonants = array('b', 'c', 'd', 'g', 'h', 'j', 'k', 'm', 'n', 'p', 'r', 's', 't', 'u', 'v', 'w', 'tr', 'cr', 'fr', 'dr', 'wr', 'pr', 'th', 'ch', 'ph', 'st');
// init vars
$consonantsCount = count($consonants);
$vowelsCount = count($vowels);
$pass = '';
$tmp = '';
// create temporary pass
for ($i = 0; $i < $length; ++$i) {
$tmp .= $consonants[mt_rand(0, $consonantsCount - 1)] . $vowels[mt_rand(0, $vowelsCount - 1)];
}
// reformat the pass
for ($i = 0; $i < $length; ++$i) {
if (mt_rand(0, 1) == 1) {
$pass .= mb_strtoupper(mb_substr($tmp, $i, 1));
} else {
$pass .= mb_substr($tmp, $i, 1);
}
}
// reformat it again, if uppercase isn't allowed
if (!$uppercaseAllowed) {
$pass = mb_strtolower($pass);
}
// reformat it again, if uppercase isn't allowed
if (!$lowercaseAllowed) {
$pass = mb_strtoupper($pass);
}
// return pass
return $pass;
}