29
ago
ago
Como remover acentos com regular expression no PHP usando Enconding
O PHP ainda não lida direito com enconding type, se você mandar substituir um ‘á’ e a string não estiver em UTF-8 você terá sérios problemas. Eu rachei a cuca um pouco e consegui um wordarround bem interessante.
Usei os HTML entities (que já entendem o encoding type) e depois mandei substituir as entidades por sua respectiva letra sem acentos. Easy, clean e indolor.
Veja o código:
function listaimagemRemoveAcentos($str, $enc = "UTF-8"){
$acentos = array(
'A' => '/À|Á|Â|Ã|Ä|Å/',
'a' => '/à|á|â|ã|ä|å/',
'C' => '/Ç/',
'c' => '/ç/',
'E' => '/È|É|Ê|Ë/',
'e' => '/è|é|ê|ë/',
'I' => '/Ì|Í|Î|Ï/',
'i' => '/ì|í|î|ï/',
'N' => '/Ñ/',
'n' => '/ñ/',
'O' => '/Ò|Ó|Ô|Õ|Ö/',
'o' => '/ò|ó|ô|õ|ö/',
'U' => '/Ù|Ú|Û|Ü/',
'u' => '/ù|ú|û|ü/',
'Y' => '/Ý/',
'y' => '/ý|ÿ/',
'a.' => '/ª/',
'o.' => '/º/');
return preg_replace($acentos,
array_keys($acentos),
htmlentities($str,ENT_NOQUOTES, $enc));
}
Com esta função simples resolvi todos os quiprocós
Meus parabéns! Função simples e a única que resolveu meu problema de acentuação com um script de busca no site.
Obrigado!
outubro 13th, 2008 at 2:11 amOs acentos são problemas que nós brasileiros enfrentamos constantemente. Felizmente, a sua função resolve esses problemas.
Abraços,
Diego Soares
outubro 23rd, 2008 at 5:14 pmMuito obrigado…
Passei dois dias tentando resolver isso…
Obrigado mesmo..
novembro 18th, 2008 at 1:48 pmte devo essa…
MUITO OBRIGADO por compatilhar essa funcao.
novembro 18th, 2008 at 2:31 pmBoa sacada, parabens e mais uma vez muito obrigado.
Daniel