Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Paulo Victor Binatto

Renomear arquivos em um diretório php

Recommended Posts

Boa tarde pessoal, estou precisando fazer uma função para renomear arquivos em um diretório, pois os arquivos enviados pelo cliente estão com acentos e dá problema ao requisitar o download.

 

Estou conseguindo visualizar, porém preciso renomear retirando os acentos. Alguma dica?

 

Desde já agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites
Otima pergunta, facil de resolver. Essa função já existe no php.
<?php
  rename("nomedoarquivo", "novoNomedoarquivo");
?>

 

Pode renomear qual quer tipo de arquivo inclusive sua extensão =). Se eu ajudei e quer fechar o tópico só clicar em resolvido ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Botasleve, o que quer é remover os caracteres ilegais, Paulo use preg_match.

Compartilhar este post


Link para o post
Compartilhar em outros sites


webdevbr obrigado pela ajuda, funcionou certinho. Segue abaixo o código utilizado

 

<?php

function is_utf8($string) {

 

return preg_match('%^(?: [x09x0Ax0Dx20-x7E] # ASCII

| [xC2-xDF][x80-xBF] # non-overlong 2-byte

| xE0[xA0-xBF][x80-xBF] # excluding overlongs

| [xE1-xECxEExEF][x80-xBF]{2} # straight 3-byte

| xED[x80-x9F][x80-xBF] # excluding surrogates

| xF0[x90-xBF][x80-xBF]{2} # planes 1-3

| [xF1-xF3][x80-xBF]{3} # planes 4-15

| xF4[x80-x8F][x80-xBF]{2} # plane 16

)*$%xs', $string);

}

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

 

setlocale(LC_ALL, 'pt_BR');

 

if (is_utf8($string))

$string = utf8_decode($string);

 

if ($slug)

$string = strtolower($string);

 

$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);

 

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

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

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

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

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

 

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);

 

if ($slug) {

 

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

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

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

}

 

return trim($string);

}

 

$path = "arquivos";

$diretorio = dir($path);

 

while($arquivo = $diretorio -> read()){

 

if(is_dir($arquivo)){

continue;

}

 

rename($path.'/'.$arquivo,removeAcentos($path.'/'.$arquivo));

 

rename($path.'/'.$arquivo,strtolower($path.'/'.$arquivo));

 

echo $path.'/'.$arquivo.'<br>';

 

}

 

?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.