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

Publicado por Roberto Francisco 22/08/2003

[ Hits: 13.276 ]

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

Script que efetua cálculos estatísticos

Gráfico de Pizza em PHP

Criando um menu de paginação de resultados com algumas funcionalidades

Entendendo os operadores de atribuição

gerador de tabelas em html v2.2


  

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