Função para remover acentuação de uma string
Função que ajuda na programação de um sistema de busca. Aceito colaboração de melhoria.
Descrição
Função que ajuda na programação de um sistema de busca. Aceito colaboração de melhoria.
<?php
/*******************************************************************************
@CRIAÇÃO.....: 21/08/2003
@AUTOR.......: BobFrank <rsfranc@yahoo.com.br>
@LINGUAGEM...: PHP
@VERSÃO......: 4.0
@OBJETO......: Remover acentos de string.
@NOME FÍSICO.: strSemAcentos.php
@FUNÇÃO......: Recebe string, modo opcional. Retorna alterada, mesma ou nada.
@STATUS......: [] Construção, [X] Operação, [] Manutenção, [] Fora de uso
********************************************************************************
@MANUTENÇÕES
-------------
@DATA........:
@PROGRAMADOR.:
@DESCRIÇÃO...:
@TIPO........: [] Correção, []Melhoria, []Integração
@MOTIVO......:
********************************************************************************
*/
function strSemAcentos($string="", $mesma=1)
{
if($string != "")
{
$com_acento = "à á â ã ä è é ê ë ì í î ï ò ó ô õ ö ù ú û ü À Á Â Ã Ä È É Ê Ë Ì Í Î Ò Ó Ô Õ Ö Ù Ú Û Ü ç Ç ñ Ñ";
$sem_acento = "a a a a a e e e e i i i i o o o o o u u u u A A A A A E E E E I I I O O O O O U U U U c C n N";
$c = explode(' ',$com_acento);
$s = explode(' ',$sem_acento);
$i=0;
foreach($c as $letra)
{
if(ereg($letra, $string))
{
$pattern[] = $letra;
$replacement[] = $s[$i];
}
$i=$i+1;
}
if(isset($pattern))
{
$i=0;
foreach($pattern as $letra)
{
$string = eregi_replace($letra, $replacement[$i], $string);
$i=$i+1;
}
return $string; # retorna string alterada
}
if ($mesma != 0)
{
return $string; # retorna a mesma string se nada mudou
}
}
return ""; # sem mudança retorna nada
}
//
// Exemplos:
print "<br>strSemAcentos('É mamão com açucar!'); = " .strSemAcentos("É mamão com açucar!");
print "<br>strSemAcentos('Teste sem acentos'); = " .strSemAcentos("Teste sem acentos");
print "<br>strSemAcentos('Teste sem acentos',0); = " .strSemAcentos("Teste sem acentos",0);
print "<br>strSemAcentos(); = " .strSemAcentos();
?>
Acho que está a complicar o que é fácil ao fazer essa função. O PHP, nativamente já possui a função strtr (http://pt2.php.net/strtr) que faz exactamente o que pretende.
Um abraço,
Tiago Lopes