Removendo acentos e caracteres especiais com PHP
Veja como remover 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);


