Função para remover caracteres especiais de uma string em PHP

Fonte:

http://blog.thiagobelem.net/removendo-acentos-de-uma-string-urls-amigaveis/

http://www.phpit.com.br/artigos/detectandodescobrindo-o-charsetcodificacao-de-uma-string-utf-8-iso-8859-1-etc.phpit

<?php

/***

* Função para remover acentos de uma string

*

* @autor Thiago Belem <contato@thiagobelem.net>

* Ajustes realizado por Silvio Garbes

* Versão 2015-09-02

*/

// http://blog.thiagobelem.net/removendo-acentos-de-uma-string-urls-amigaveis/

function removeAcentos($string, $slug = false) {

// http://www.phpit.com.br/artigos/detectandodescobrindo-o-charsetcodificacao-de-uma-string-utf-8-iso-8859-1-etc.phpit

if(mb_detect_encoding($string.'x', 'UTF-8, ISO-8859-1') == 'UTF-8'){

$string = utf8_decode(strtolower($string));

}

$string = strtolower($string);

// verificar codigo ascii de string

//for($i=0;$i<strlen($string);$i++){

// echo $string[$i]." ";

// echo ord($string[$i]);

// echo "\n";

//}

// Código ASCII das vogais

$ascii['a'] = range(224, 230);

$ascii['e'] = range(232, 235);

$ascii['i'] = range(236, 239);

$ascii['o'] = array_merge(range(242, 246), array(240, 248));

$ascii['u'] = range(249, 252);

// Código ASCII dos outros caracteres

$ascii['b'] = array(223);

$ascii['c'] = array(231,199);

$ascii['d'] = array(208);

$ascii['n'] = array(241);

$ascii['y'] = array(253, 255);

$ascii['ra'] = array(170);

foreach ($ascii as $key=>$item) {

$acentos = '';

foreach ($item AS $codigo) $acentos .= chr($codigo);

$troca[$key] = '/['.$acentos.']/i';

}

$string = preg_replace(array_values($troca), array_keys($troca), $string);

// Slug?

if ($slug) {

// Troca tudo que não for letra ou número por um caractere ($slug)

$string = preg_replace('/[^a-z0-9]/i', $slug, $string);

// Tira os caracteres ($slug) repetidos

$string = preg_replace('/' . $slug . '{2,}/i', $slug, $string);

$string = trim($string, $slug);

}

return $string;

}

echo strtoupper(removeAcentos(' [Resolvido] » Problemas na conversão de página html'));

?>