Função para apagar um diretório e todo o seu conteúdo
Se você já tentou apagar uma pasta pelo PHP, viu como é um processo chato caso ela esteja cheia de arquivos e subpastas com mais arquivos dentro. É que o PHP só apaga um diretório se ele estiver completamente vazio. Então criei esta função em que você só informa uma pasta "raiz", e ela automaticamente exterminará todo o conteúdo que houver no diretório antes de apagá-lo... Vou postar duas funções que fazem isso (uma normal e a outra recursiva... tem pra todos os gostos :D o resutado final é o mesmo). :rolleyes:
Abraços!
Atenção!
Arquivos apagados pelo PHP não podem ser recuperados. Portanto, tenha muito cuidado ao utilizar esta função. Saiba bem o que está fazendo antes de colocar este script para executar. Não me responsabilizo por qualquer arquivo (inclusive as fotos do topless da Angélica) que você possa perder pelo mau uso desta função.
<?php
//Forma de utilizar a função
$dir = 'diretorio/que/sera/removido/';
removeTree($dir); // ou removeTreeRec($dir), dependendo da função que você copiar
?>
function removeTree($rootDir)
/**
* Função para remover um diretório sem ter que apagar manualmente cada arquivo e pasta dentro dele
*
* ATENÇÃO!
*
* Muito cuidado ao utilizar esta função! Ela apagará todo o conteúdo dentro do diretório
* especificado sem pedir qualquer confirmação. Os arquivos não poderão ser recuperados.
* Portanto, só utilize-a se tiver certeza de que deseja apagar o diretório.
*
*
* Autor: Carlos Reche
* E-mail: carlosreche@yahoo.com
*
* Por favor, mantenha os créditos : )
*
*/
{
if (!is_dir($rootDir))
{
return false;
}
if (!preg_match("/\\/$/", $rootDir))
{
$rootDir .= '/';
}
$stack = array($rootDir);
while (count($stack) > 0)
{
$hasDir = false;
$dir = end($stack);
$dh = opendir($dir);
while (($file = readdir($dh)) !== false)
{
if ($file == '.' || $file == '..')
{
continue;
}
if (is_dir($dir . $file))
{
$hasDir = true;
array_push($stack, $dir . $file . '/');
}
else if (is_file($dir . $file))
{
unlink($dir . $file);
}
}
closedir($dh);
if ($hasDir == false)
{
array_pop($stack);
rmdir($dir);
}
}
return true;
}
function removeTreeRec($rootDir)
/**
* Função recursiva para remover um diretório sem ter que apagar manualmente cada arquivo e pasta dentro dele
*
* ATENÇÃO!
*
* Muito cuidado ao utilizar esta função! Ela apagará todo o conteúdo dentro do diretório
* especificado sem pedir qualquer confirmação. Os arquivos não poderão ser recuperados.
* Portanto, só utilize-a se tiver certeza de que deseja apagar o diretório.
*
*
* Autor: Carlos Reche
* E-mail: carlosreche@yahoo.com
*
* Por favor, mantenha os créditos : )
*
*/
{
if (!is_dir($rootDir))
{
return false;
}
if (!preg_match("/\\/$/", $rootDir))
{
$rootDir .= '/';
}
$dh = opendir($rootDir);
while (($file = readdir($dh)) !== false)
{
if ($file == '.' || $file == '..')
{
continue;
}
if (is_dir($rootDir . $file))
{
removeTreeRec($rootDir . $file);
}
else if (is_file($rootDir . $file))
{
unlink($rootDir . $file);
}
}
closedir($dh);
rmdir($rootDir);
return true;
}
Pergunta
Beraldo
Script postado por: Illidan
Função para apagar um diretório e todo o seu conteúdo
Se você já tentou apagar uma pasta pelo PHP, viu como é um processo chato caso ela esteja cheia de arquivos e subpastas com mais arquivos dentro. É que o PHP só apaga um diretório se ele estiver completamente vazio. Então criei esta função em que você só informa uma pasta "raiz", e ela automaticamente exterminará todo o conteúdo que houver no diretório antes de apagá-lo... Vou postar duas funções que fazem isso (uma normal e a outra recursiva... tem pra todos os gostos :D o resutado final é o mesmo). :rolleyes:
Abraços!
Atenção!
Arquivos apagados pelo PHP não podem ser recuperados. Portanto, tenha muito cuidado ao utilizar esta função. Saiba bem o que está fazendo antes de colocar este script para executar. Não me responsabilizo por qualquer arquivo (inclusive as fotos do topless da Angélica) que você possa perder pelo mau uso desta função.
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.