Função para remover acentuação de uma string

Publicado por Roberto Francisco 22/08/2003

[ Hits: 12.937 ]

Download strSemAcentos.php




Função que ajuda na programação de um sistema de busca. Aceito colaboração de melhoria.

  



Esconder código-fonte

<?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();
?>

Scripts recomendados

Formatando data de yyyy/mm/dd para dd/mm/yyyy

RSS 1.0 no seu site

Exemplo de recursividade: gerador de sequências de tamanho e soma dos elementos fixos

Gerador de Thumbnail (miniatura)

Widgets intermediários em PHP-GTK


  

Comentários
[1] Comentário enviado por tiagolopes em 31/07/2008 - 08:00h

Viva Roberto Francisco!

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


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts