Como remover acentos e caracteres especiais em PHP?

Remover acentos e caracteres especiais com PHP

Uma maneira de fazer isso usando regex e preg_replace.é

Para isso use uma função com a descrita abaixo.



<?php //Inicia o código PHP.
function limparTexto($conteudo) { //Declara a função recebendo o parâmetro $conteudo.
    $conteudo = strtolower($conteudo); //Passa todo o texto para minúsculo.
    $conteudo = preg_replace('/[áàãâä]/ui', 'a', $conteudo); //troca todas os possíveis acentos de "a" pela letra não acentuada.
//No final da expressão regular é passado "ui", onde o "u" significa unicode e o "i" case insensitive para evitar possíveis erros.
    $conteudo = preg_replace('/[éèêë]/ui', 'e', $conteudo); //Aqui e abaixo faz o mesmo feito para "a" em todas as vogais e para letra "c".
    $conteudo = preg_replace('/[íìîï]/ui', 'i', $conteudo);
    $conteudo = preg_replace('/[óòõôö]/ui', 'o', $conteudo);
    $conteudo = preg_replace('/[úùûü]/ui', 'u', $conteudo);
    $conteudo = preg_replace('/[ç]/ui', 'c', $conteudo);
    $conteudo = preg_replace('/[^a-z0-9]/i', '_', $conteudo); //Aqui pega tudo o que não for letra ou número e troca por underline.
//Usei  o underline pois um dos usos dessa função é limpar texto para url.
    return $conteudo; //Retorna o conteúdo passado no parâmetro.
}


A função pode ser chamada para limpar qualquer texto(string).

O que a função faz é substituir os caracteres com acentos por suas letras sem os mesmos e depois pega tudo o que não for letra ou número e substitui por underline "_" e retorna o parâmetro que hávia sido passado.

Quer acompanhar as novidade do site?

Leia mais em: ww.php.net/manual/pt_BR/funct...

Como remover acentos e caracteres especiais em PHP?

Última atualização: 2023-02-15