Last active
February 1, 2016 11:48
-
-
Save guilhermewop/07eccee80eb08c4bafcb to your computer and use it in GitHub Desktop.
Contador de Letras
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Conta a quantidade de letras de uma determinada palavra | |
* | |
* @param $palavra String Palavra a ser analisada pelo contador | |
* @param $letras Array|String Letras que deseja contar na palavra | |
* @throws InvalidArgumentException Lança exceção caso não passe pelo menos uma letra para contar na palavra | |
* @return Int Quantidade de ocorrências de $letras na $palavra | |
*/ | |
function contarLetras($palavra, $letras = ['a', 'e', 'i', 'o', 'u']) | |
{ | |
if (empty($letras)) { | |
throw new \InvalidArgumentException( | |
"É necessário informar uma ou mais letras que deseja-se contar na palavra" | |
); | |
} | |
// normaliza as letras para string e retira espaços | |
if (is_array($letras)) { | |
$letras = implode('', $letras); | |
} | |
$letras = trim($letras); | |
/** | |
* Executa uma expressão regular para devolver a quantidade de letras encontras na palavra. | |
* Analisa a palavra sem diferenciar letras maiúsculas e minúsculas | |
*/ | |
return (int) preg_match_all("/[{$letras}]/i", $palavra); | |
} | |
// testes | |
try { | |
echo sprintf("A palavra contém %s letra(s) procurada(s)" . PHP_EOL, contarLetras('guilherme')); | |
echo sprintf("A palavra contém %s letra(s) procurada(s)" . PHP_EOL, contarLetras('guilherme', ['a', 'E', 'i', 'O', 'u'])); | |
echo sprintf("A palavra contém %s letra(s) procurada(s)" . PHP_EOL, contarLetras('guilherme william', 'l')); | |
echo sprintf("A palavra contém %s letra(s) procurada(s)" . PHP_EOL, contarLetras('guilherme william', ['u', 'W', 'm'])); | |
echo sprintf("A palavra contém %s letra(s) procurada(s)" . PHP_EOL, contarLetras('convenia')); | |
echo sprintf("A palavra contém %s letra(s) procurada(s)" . PHP_EOL, contarLetras('convenia', 'v')); | |
echo sprintf("A palavra contém %s letra(s) procurada(s)" . PHP_EOL, contarLetras('convenia', null)); | |
} catch (\Exception $e) { | |
die($e->getMessage() . PHP_EOL); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment