Skip to content

Instantly share code, notes, and snippets.

@guilhermewop
Last active February 1, 2016 11:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save guilhermewop/07eccee80eb08c4bafcb to your computer and use it in GitHub Desktop.
Save guilhermewop/07eccee80eb08c4bafcb to your computer and use it in GitHub Desktop.
Contador de Letras
<?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