script para remover caracteres especiais

2,602 views
Skip to first unread message

Diego Henrique Oliveira

unread,
May 13, 2008, 4:51:40 PM5/13/08
to Grupo PHP-MG
Galera.

Alguem tem uma função para remover caracteres especiais de uma string?

Eu tenha essa, mas só funciona no PHP 5, eu preciso de uma que funcione em ambos (4 e 5).

function limparString( $string ) {
    // Converte todos os caracteres para minusculo
    $string = strtolower($string);
    // Remove os acentos
    $string = eregi_replace('[aáàãâä]', 'a', $string);
    $string = eregi_replace('[eéèêë]', 'e', $string);
    $string = eregi_replace('[iíìîï]', 'i', $string);
    $string = eregi_replace('[oóòõôö]', 'o', $string);
    $string = eregi_replace('[uúùûü]', 'u', $string);
    // Remove o cedilha e o ñ
    $string = eregi_replace('[ç]', 'c', $string);
    $string = eregi_replace('[ñ]', 'n', $string);
    // Substitui os espaços em brancos por underline
    $string = eregi_replace('( )', '_', $string);
    // Remove hifens duplos
    $string = eregi_replace('--', '_', $string);
    return $string;       
}

Se alguem tiver e puder compartilhar, obrigado.
 

Diego Henrique
E-mail/MSN: diegoho...@yahoo.com.br
Cel: (31) 8415 4732






Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento!

Michael Mafort

unread,
May 13, 2008, 5:00:14 PM5/13/08
to ph...@googlegroups.com
No php 4 tem o ereg_replace que eh case sensitive, para fazer uma função identica usando php 4 use este ereg_replace com low/upper_case em seus caracteres para substituição

Abraços,

2008/5/13 Diego Henrique Oliveira <diegoho...@yahoo.com.br>:

Rodrigo Oliveira

unread,
May 13, 2008, 5:10:07 PM5/13/08
to ph...@googlegroups.com
:S

:S

:S

:S

:S

:S

:S

:S

:S

:S

:S

:S

:S

:S

:S

:S

:S

:S

acho que tem um amigo meu que tem... chama php.net rs


2008/5/13 Diego Henrique Oliveira <diegoho...@yahoo.com.br>:
Galera.

Rafael Gomes Dantas

unread,
May 14, 2008, 12:06:04 AM5/14/08
to ph...@googlegroups.com
Não tenho certeza, mas acho que o banco de dados faz isso se você escolher o collation corretamente na hora de criar.

(Buscar "agua" e encontrar "água")

Maurício Diniz

unread,
May 14, 2008, 7:49:22 AM5/14/08
to PHP MG
Não entendi muito bem. Você quer retirar apenas acentos? Tente o
método abaixo:
function acento_retira($string)
{
$palavra = strtr($string, "áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ ",
"aaaaeeiooouucAAAAEEIOOOUUC_");
$palavranova = str_replace("_"," ",$palavra);
return $palavranova;
}

Se for para proteger contra sql_injection use o método nativo do php:
http://www.php.net/manual/pt_BR/function.mysql-real-escape-string.php

Abraços

Maurício Diniz



On 13 maio, 17:51, Diego Henrique Oliveira
<diegoholive...@yahoo.com.br> wrote:
> Galera.
>
> Alguem tem uma função para remover caracteres especiais de uma string?
>
> Eu tenha essa, mas só funciona no PHP 5, eu preciso de uma que funcione em ambos (4 e 5).
>
> function limparString( $string ) {
>     // Converte todos os caracteres para minusculo
>     $string = strtolower($string);
>     // Remove os acentos
>     $string = eregi_replace('[aáàãâä]', 'a', $string);
>     $string = eregi_replace('[eéèêë]', 'e', $string);
>     $string = eregi_replace('[iíìîï]', 'i', $string);
>     $string = eregi_replace('[oóòõôö]', 'o', $string);
>     $string = eregi_replace('[uúùûü]', 'u', $string);
>     // Remove o cedilha e o ñ
>     $string = eregi_replace('[ç]', 'c', $string);
>     $string = eregi_replace('[ñ]', 'n', $string);
>     // Substitui os espaços em brancos por underline
>     $string = eregi_replace('( )', '_', $string);
>     // Remove hifens duplos
>     $string = eregi_replace('--', '_', $string);
>     return $string;        
>
> }
>
> Se alguem tiver e puder compartilhar, obrigado.
>
> Diego Henrique
> E-mail/MSN: diegoholive...@yahoo.com.br
> Cel: (31) 8415 4732
>
> ________________________________
>
>       Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento!http://br.mail.yahoo.com/
Message has been deleted

kinzinho

unread,
May 14, 2008, 10:53:21 AM5/14/08
to PHP MG
Apenas melhorando..

<?php
function acento_retira($string) {
$palavra = strtr($string,
"ŠŒŽšœžŸ
¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ",
"SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy");
$palavranova = str_replace("_"," ",$palavra);
return $palavranova;
};
?>
Reply all
Reply to author
Forward
0 new messages