Removendo acentos e caracteres especiais com PHP

Removendo acentos e caracteres especiais com PHP

Neste artigo vamos ver várias formas de como remover acentos de uma string com PHP.

Vamos ver exemplos de utilização das seguintes funções:

* strtr

* preg_replace

* str_replace

 

Strtr

Uma das formas mais simples é utilizar a função "strtr". Esta função substitui caracteres. Esta função recebe 2 parâmetros, o primeiro é o texto que vamos utilizar. O segundo é um array associativo, onde a chave é o caracter com acento e o valor é o caractere sem acento. 

$string = "São Paulo";

$caracteres_sem_acento = array(

    \'Š\'=>\'S\', \'š\'=>\'s\', \'Ð\'=>\'Dj\',\'ÂŽ\'=>\'Z\', \'ž\'=>\'z\', \'À\'=>\'A\', \'Á\'=>\'A\', \'Â\'=>\'A\', \'Ã\'=>\'A\', \'Ä\'=>\'A\',

    \'Å\'=>\'A\', \'Æ\'=>\'A\', \'Ç\'=>\'C\', \'È\'=>\'E\', \'É\'=>\'E\', \'Ê\'=>\'E\', \'Ë\'=>\'E\', \'Ì\'=>\'I\', \'Í\'=>\'I\', \'Î\'=>\'I\',

    \'Ï\'=>\'I\', \'Ñ\'=>\'N\', \'Ń\'=>\'N\', \'Ò\'=>\'O\', \'Ó\'=>\'O\', \'Ô\'=>\'O\', \'Õ\'=>\'O\', \'Ö\'=>\'O\', \'Ø\'=>\'O\', \'Ù\'=>\'U\', \'Ú\'=>\'U\',

    \'Û\'=>\'U\', \'Ü\'=>\'U\', \'Ý\'=>\'Y\', \'Þ\'=>\'B\', \'ß\'=>\'Ss\',\'à\'=>\'a\', \'á\'=>\'a\', \'â\'=>\'a\', \'ã\'=>\'a\', \'ä\'=>\'a\',

    \'å\'=>\'a\', \'æ\'=>\'a\', \'ç\'=>\'c\', \'è\'=>\'e\', \'é\'=>\'e\', \'ê\'=>\'e\', \'ë\'=>\'e\', \'ì\'=>\'i\', \'í\'=>\'i\', \'î\'=>\'i\',

    \'ï\'=>\'i\', \'ð\'=>\'o\', \'ñ\'=>\'n\', \'Å„\'=>\'n\', \'ò\'=>\'o\', \'ó\'=>\'o\', \'ô\'=>\'o\', \'õ\'=>\'o\', \'ö\'=>\'o\', \'ø\'=>\'o\', \'ù\'=>\'u\',

    \'ú\'=>\'u\', \'û\'=>\'u\', \'ü\'=>\'u\', \'ý\'=>\'y\', \'ý\'=>\'y\', \'þ\'=>\'b\', \'ÿ\'=>\'y\', \'ƒ\'=>\'f\',

    \'ă\'=>\'a\', \'î\'=>\'i\', \'â\'=>\'a\', \'È™\'=>\'s\', \'È›\'=>\'t\', \'Ä‚\'=>\'A\', \'Î\'=>\'I\', \'Â\'=>\'A\', \'Ș\'=>\'S\', \'Èš\'=>\'T\',

);

$nova_string = strtr($string, $caracteres_sem_acento);

echo ($nova_string);

 

Preg_replace

Uma segunda forma de remover acentos é utilizar a função "preg_replace". Esta função recebe 3 parâmetros, o primeiro é uma expressão regular que serve como padrão de busca. O segundo parâmetro são os caracteres que devem ser inseridos no lugar das informações localizadas, e o terceiro parâmetro, é a string que vai ser utilizada.

 

$string = "São Paulo";

$nova_string = preg_replace(array("/(á|à|ã|â|ä)/","/(Á|À|Ã|Â|Ä)/","/(é|è|ê|ë)/","/(É|È|Ê|Ë)/","/(í|ì|î|ï)/","/(Í|Ì|Î|Ï)/","/(ó|ò|õ|ô|ö)/","/(Ó|Ò|Õ|Ô|Ö)/","/(ú|ù|û|ü)/","/(Ú|Ù|Û|Ü)/","/(ñ)/","/(Ñ)/"),explode(" ","a A e E i I o O u U n N"),$string);

echo ($nova_string);

 

No exemplo a seguir, vamos ver algo um pouco mais sofisticado. Vamos criar uma expressão para remover todos os caracteres que não sejam letras, números ou underline, e depois, utilizando a função "strtr", vamos remover os acentos.

 

$string = "São Paulo (1982)";

$caracteres_sem_acento = array(

    \'Š\'=>\'S\', \'š\'=>\'s\', \'Ð\'=>\'Dj\',\'ÂŽ\'=>\'Z\', \'ž\'=>\'z\', \'À\'=>\'A\', \'Á\'=>\'A\', \'Â\'=>\'A\', \'Ã\'=>\'A\', \'Ä\'=>\'A\',

    \'Å\'=>\'A\', \'Æ\'=>\'A\', \'Ç\'=>\'C\', \'È\'=>\'E\', \'É\'=>\'E\', \'Ê\'=>\'E\', \'Ë\'=>\'E\', \'Ì\'=>\'I\', \'Í\'=>\'I\', \'Î\'=>\'I\',

    \'Ï\'=>\'I\', \'Ñ\'=>\'N\', \'Ń\'=>\'N\', \'Ò\'=>\'O\', \'Ó\'=>\'O\', \'Ô\'=>\'O\', \'Õ\'=>\'O\', \'Ö\'=>\'O\', \'Ø\'=>\'O\', \'Ù\'=>\'U\', \'Ú\'=>\'U\',

    \'Û\'=>\'U\', \'Ü\'=>\'U\', \'Ý\'=>\'Y\', \'Þ\'=>\'B\', \'ß\'=>\'Ss\',\'à\'=>\'a\', \'á\'=>\'a\', \'â\'=>\'a\', \'ã\'=>\'a\', \'ä\'=>\'a\',

    \'å\'=>\'a\', \'æ\'=>\'a\', \'ç\'=>\'c\', \'è\'=>\'e\', \'é\'=>\'e\', \'ê\'=>\'e\', \'ë\'=>\'e\', \'ì\'=>\'i\', \'í\'=>\'i\', \'î\'=>\'i\',

    \'ï\'=>\'i\', \'ð\'=>\'o\', \'ñ\'=>\'n\', \'Å„\'=>\'n\', \'ò\'=>\'o\', \'ó\'=>\'o\', \'ô\'=>\'o\', \'õ\'=>\'o\', \'ö\'=>\'o\', \'ø\'=>\'o\', \'ù\'=>\'u\',

    \'ú\'=>\'u\', \'û\'=>\'u\', \'ü\'=>\'u\', \'ý\'=>\'y\', \'ý\'=>\'y\', \'þ\'=>\'b\', \'ÿ\'=>\'y\', \'ƒ\'=>\'f\',

    \'ă\'=>\'a\', \'î\'=>\'i\', \'â\'=>\'a\', \'È™\'=>\'s\', \'È›\'=>\'t\', \'Ä‚\'=>\'A\', \'Î\'=>\'I\', \'Â\'=>\'A\', \'Ș\'=>\'S\', \'Èš\'=>\'T\',

);

$nova_string = preg_replace("/[^a-zA-Z0-9]/", "", strtr($string, $caracteres_sem_acento));

echo ($nova_string);

 

Str_replace

Mas ainda existem mais opções. Podemos utilizar a função "str_replace". Da mesma forma que os exemplos anteriores, ela recebe 3 parâmetros, o primeiro é o que precisamos localizar, o segundo é o que vamos substituir, e por último, a string que vai ser alterada. Podemos informar como primeiro e segundo parâmetro arrays com as informações que vamos localizar/substituir.

 

$string = "São Paulo";

$comAcentos = array(\'à\', \'á\', \'â\', \'ã\', \'ä\', \'å\', \'ç\', \'è\', \'é\', \'ê\', \'ë\', \'ì\', \'í\', \'î\', \'ï\', \'ñ\', \'ò\', \'ó\', \'ô\', \'õ\', \'ö\', \'ù\', \'ü\', \'ú\', \'ÿ\', \'À\', \'Á\', \'Â\', \'Ã\', \'Ä\', \'Å\', \'Ç\', \'È\', \'É\', \'Ê\', \'Ë\', \'Ì\', \'Í\', \'Î\', \'Ï\', \'Ñ\', \'Ò\', \'Ó\', \'Ô\', \'Õ\', \'Ö\', \'O\', \'Ù\', \'Ü\', \'Ú\');

$semAcentos = array(\'a\', \'a\', \'a\', \'a\', \'a\', \'a\', \'c\', \'e\', \'e\', \'e\', \'e\', \'i\', \'i\', \'i\', \'i\', \'n\', \'o\', \'o\', \'o\', \'o\', \'o\', \'u\', \'u\', \'u\', \'y\', \'A\', \'A\', \'A\', \'A\', \'A\', \'A\', \'C\', \'E\', \'E\', \'E\', \'E\', \'I\', \'I\', \'I\', \'I\', \'N\', \'O\', \'O\', \'O\', \'O\', \'O\', \'O\', \'U\', \'U\', \'U\');

$nova_string = str_replace($comAcentos, $semAcentos, $string);

echo ($nova_string);

 

Outros conteudos que podem ser de seu interesse

Calculando distâncias com PHP
04/06/2023PHP

Calculando distâncias com PHP

Veja como calcular a distância entre duas coordenadas com PHP

Saiba mais...
Mesclar PDFs com PHP
02/11/2021PHP

Mesclar PDFs com PHP

Veja como juntar arquivos PDF utilizando PHP

Saiba mais...

Conteúdo sobre banco de dados sem complicação!


Warning: Cannot modify header information - headers already sent by (output started at /home/storage/f/7d/a9/dbins/public_html/blog/post.php:101) in /home/storage/f/7d/a9/dbins/public_html/blog/ga4_track.php on line 11