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.é
<?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.
Leia mais em: ww.php.net/manual/pt_BR/funct...