'ões', 'ês' => 'eses', 'm' => 'ns', 'l' => 'is', 'r' => 'res', 'us' => 'i', //campus -> campi 'x' => 'xes', 'z' => 'zes', ); /** * Exceções às regras */ public $exceptions = array( 'cidadão' => 'cidadãos', 'mão' => 'mãos', 'qualquer' => 'quaisquer', ); /** * Passa uma palavra para o plural * * @param string $word A palavra que deseja ser passada para o plural * @return string */ public function pluralize($word){ //Pertence a alguma exceção? if(in_array($word, array_keys($this->exceptions))): return $this->exceptions[$word]; //Não pertence a nenhuma exceção. Mas tem alguma regra? else: foreach($this->rules as $singular=>$plural): if(preg_match("({$singular}$)", $word)): return str_replace($singular, $plural, $word); endif; endforeach; endif; //Não pertence às exceções, nem às regras. return $word . 's'; } /** * Passa uma palavra para o singular * * @param string $word A palavra que deseja ser passada para o singular * @return string */ public function singularize($word){ //Pertence às exceções? if(in_array($word, $this->exceptions)): $invert = array_flip($this->exceptions); return $invert[$word]; //Não é execeção.. Mas pertence a alguma regra? else: foreach($this->rules as $singular => $plural): if(preg_match("({$plural}$)",$word)): return str_replace($plural, $singular, $word); endif; endforeach; endif; //Nem é exceção, nem tem regra definida. return substr($word, 0, strlen($word) - 1); } } ?>