Created
May 26, 2015 15:22
-
-
Save franklinjavier/2b19a669151cddf6467c to your computer and use it in GitHub Desktop.
Converte uma palavra no plural para o singular
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 | |
/** | |
* Converte uma palavra no plural para o singular | |
* @param string $str Uma palavra | |
* @return string Palavra no singular | |
* | |
* https://github.com/Moraga/PluralToSingular | |
* | |
*/ | |
function pluraltosingular($str) { | |
if (substr($str, -1) != 's') | |
return $str; | |
// albuns batons marrons | |
if (substr($str, -2, 1) == 'n') | |
return substr($str, 0, -2) . 'm'; | |
// flores gizes vezes tenis | |
else if (strpos('aeou', substr($str, 0, 1)) === false && substr($str, -2, 1) == 'e' && strpos('nrsz', substr($str, -3, 1)) !== false) | |
return substr($str, 0, -2); | |
// aneis anzois jornais | |
else if (substr($str, -2) == 'is' && strpos('aeiou', substr($str, -3, 1)) !== false) | |
return substr($str, 0, -2) . 'l'; | |
// frances portugues | |
else if (substr($str, -2) == 'es' && strpos('clu', substr($str, -3, 1)) !== false) | |
return $str; | |
// caes paes | |
else if (substr($str, -3) == 'aes') | |
return substr($str, 0, -2) . 'o'; | |
// leoes | |
else if (substr($str, -3) == 'oes') | |
return substr($str, 0, -3) . 'ao'; | |
// exceto onibus lapis tenis arvores | |
else if (strpos('ius', substr($str, -2, 1)) === false && substr($str, -3, 1) != 'n') | |
return substr($str, 0, -1); | |
return $str; | |
} | |
?> |
Por conta do código strpos('aeou', substr($str, 0, 1)) === false &&
não aplica na palavra "assadores", fica assadore, ou qualquer outra palavra que comece com vogal. Saberia me informar o motivo deste trecho?
@Moraga é o pai dessa função https://github.com/Moraga/PluralToSingular
@franklinjavier obrigado !
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Ótimo código, me ajudou em uma questão. Só uma coisa, testei o código e quando usa acento não retorna, modifiquei aqui para usar acentos também, mas se quiserem usar sem acento, da para usar o código abaixo bem no começo da função:
`$table = array(
'Š'=>'S', 'š'=>'s', 'Đ'=>'Dj', 'đ'=>'dj', 'Ž'=>'Z', 'ž'=>'z', 'Č'=>'C', 'č'=>'c', 'Ć'=>'C', 'ć'=>'c',
'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E',
'Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O',
'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U', 'Ú'=>'U', 'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss',
'à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e',
'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o',
'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'ý'=>'y', 'þ'=>'b',
'ÿ'=>'y', 'Ŕ'=>'R', 'ŕ'=>'r',
);
$str = strtr($str, $table);`