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