/** * Ajusta as palavras para por acentos * * @param string $palavra Palavra a ser modificada * @return string Palavra com acento * @access public */ public function acentos($palavra) { $espacamentos = array(' ', '_'); foreach ($espacamentos as $espacamento) { if (strpos($palavra, $espacamento) !== false) { $palavra = explode($espacamento, $palavra); $saida = ''; foreach ($palavra as $pedaco) { $saida .= Inflexao::acentos($pedaco) . $espacamento; } return rtrim($saida, $espacamento); } } if (preg_match('/(.*)cao$/', $palavra, $matches)) { return $matches[1] . 'ção'; } if (preg_match('/(.*)ao(s)?$/', $palavra, $matches)) { return $matches[1] . 'ão' . (isset($matches[2]) ? $matches[2] : ''); } if (preg_match('/(.*)coes$/', $palavra, $matches)) { return $matches[1] . 'ções'; } if (preg_match('/(.*)oes$/', $palavra, $matches)) { return $matches[1] . 'ões'; } if (preg_match('/(.*)aes$/', $palavra, $matches)) { return $matches[1] . 'ães'; } return $palavra; }
function testAcentos() { $this->assertEqual('caminhão', Inflexao::acentos('caminhao')); $this->assertEqual('Pão', Inflexao::acentos('Pao')); $this->assertEqual('canção', Inflexao::acentos('cancao')); $this->assertEqual('canções', Inflexao::acentos('cancoes')); $this->assertEqual('limões', Inflexao::acentos('limoes')); $this->assertEqual('mães', Inflexao::acentos('maes')); $this->assertEqual('joão do caminhão', Inflexao::acentos('joao do caminhao')); $this->assertEqual('joão_do_caminhão', Inflexao::acentos('joao_do_caminhao')); }