Ícone do site Linha de Comando

PHP: Função para tratar nome de um arquivo na hora de fazer upload

Olá pessoal,

esta função pode ser muito útil na hora de fazer upload de arquivos.

Imagine que o arquivo a ser enviado tenha o seguinte nome Brazil.Brasília animação.jpg (com acentuação, cedilha e espaços); ao utilizar a função abaixo, o nome ficará assim: brazil-brasilia-animacao.jpg.


function tratar_arquivo_upload($string){
   // pegando a extensao do arquivo
   $partes 	= explode(".", $string);
   $extensao 	= $partes[count($partes)-1];	
   // somente o nome do arquivo
   $nome	= preg_replace('/\.[^.]*$/', '', $string);	
   // removendo simbolos, acentos etc
   $a = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýýþÿŔŕ?';
   $b = 'aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuuyybyRr-';
   $nome = strtr($nome, utf8_decode($a), $b);
   $nome = str_replace(".","-",$nome);
   $nome = preg_replace( "/[^0-9a-zA-Z\.]+/",'-',$nome);
   return utf8_decode(strtolower($nome.".".$extensao));
}
$file = $_FILES['arquivo'];
$filename = tratar_arquivo_upload(utf8_decode($file['name']));
?>
Sair da versão mobile