function retira_acentos($texto)
{
$array1 = array( "á", "à", "â", "ã", "ä", "é", "è", "ê", "ë", "í", "ì", "î", "ï", "ó", "ò", "ô", "õ", "ö", "ú", "ù", "û", "ü", "ç"
, "Á", "À", "Â", "Ã", "Ä", "É", "È", "Ê", "Ë", "Í", "Ì", "Î", "Ï", "Ó", "Ò", "Ô", "Õ", "Ö", "Ú", "Ù", "Û", "Ü", "Ç" );
$array2 = array( "a", "a", "a", "a", "a", "e", "e", "e", "e", "i", "i", "i", "i", "o", "o", "o", "o", "o", "u", "u", "u", "u", "c"
, "A", "A", "A", "A", "A", "E", "E", "E", "E", "I", "I", "I", "I", "O", "O", "O", "O", "O", "U", "U", "U", "U", "C" );
return str_replace( $array1, $array2, $texto);
}
$texto = retira_acentos($variavel_q_quer_tirar_acentos);
$variavel_q_quer_tirar_acentos = $texto;
Se quiser ainda tirar carateres especiais como $ ou ª ou º entre outros sugiro um uso combinado de regex com str_replace conforme abaixo:
function retira_acentos($texto)
{
$array1 = array( "á", "à", "â", "ã", "ä", "é", "è", "ê", "ë", "í", "ì", "î", "ï", "ó", "ò", "ô", "õ", "ö", "ú", "ù", "û", "ü", "ç"
, "Á", "À", "Â", "Ã", "Ä", "É", "È", "Ê", "Ë", "Í", "Ì", "Î", "Ï", "Ó", "Ò", "Ô", "Õ", "Ö", "Ú", "Ù", "Û", "Ü", "Ç" );
$array2 = array( "a", "a", "a", "a", "a", "e", "e", "e", "e", "i", "i", "i", "i", "o", "o", "o", "o", "o", "u", "u", "u", "u", "c"
, "A", "A", "A", "A", "A", "E", "E", "E", "E", "I", "I", "I", "I", "O", "O", "O", "O", "O", "U", "U", "U", "U", "C" );
$texto= str_replace( $array1, $array2, $texto);
$texto=preg_replace("/[^a-z0-9\s\-]/i", "", $texto);
$texto=preg_replace("/\s/", "_", $texto); // Replace all spaces with underline
return $texto;
}
$texto = retira_acentos($variavel_q_quer_tirar_acentos);
Para não ter problema com o nome do arquivo, sugiro usar assim:
// Descobrir os 4 ultimos caracteres do arquivo, por exemplo .pdf
$final = $arquivo_name;
$final = substr($final,(strlen($final)-4),strlen($final));
$nome_sem_final=substr($arquivo_name, 0, -4);
$arquivo_name = retira_acentos($nome_sem_final).$final;
Para achar a extensão do arquivo temos também:
$info = pathinfo($filename);
$name = $info['filename'];
$ext = $info['extension'];
// Shorter
$name = pathinfo($file, PATHINFO_FILENAME);
// Or in PHP 5.4
$name = pathinfo($filename)['filename'];
// Or in PHP 5.6, 7>
$ext=pathinfo($filename, PATHINFO_EXTENSION);
Luis, blog fantástico, vou seguí-lo. Obrigado pelo comentário que fez no meu blog neste post: http://redeserrossoeprogramacao.blogspot.com/2009/05/compartilhando-pasta-no-virtualboxhost.html
ResponderExcluirFalou, abraço.
existe uma outra opção através da função
ResponderExcluirpreg_replace("/&([a-z])[a-z]+;/i", "$1", htmlentities($valor));
Eu uso a algum tempo e funciona perfeitamente
Odeio fica respondendo em Blogs, mais como foi muito útil para um script meu, Obrigado Ricardo!
ExcluirVALEUUUUUUUUUUU!!!!!!!!
ExcluirCara, me Salvou! Essa é a parte boa de ler os comentários... rs
Excluirde dezenas de exeplos que achei na net, este foi o unico que funcionou perfeitamente.. Parabens, amigo!
ResponderExcluirFina!
ResponderExcluirValeu, mas para nome de arquivos precisa de um ajuste senão o file perde o tipo dele, mas muito bom
ResponderExcluirPara não ter problema com o nome do arquivo, sugiro usar assim:
Excluir// Descobrir os 4 ultimos caracteres do arquivo, por exemplo .pdf
$final = $arquivo_name;
$final = substr($final,(strlen($final)-4),strlen($final));
$nome_sem_final=substr($arquivo_name, 0, -4);
$arquivo_name = retira_acentos($nome_sem_final).$final;