369 Stimmen

Löschen aller Dateien aus einem Ordner mit PHP?

Ich hatte zum Beispiel einen Ordner mit dem Namen "Temp" und wollte alle Dateien aus diesem Ordner mit PHP löschen oder leeren. Kann ich das tun?

725voto

Floern Punkte 32839
$files = glob('path/to/temp/*'); // get all file names
foreach($files as $file){ // iterate files
  if(is_file($file)) {
    unlink($file); // delete file
  }
}

Wenn Sie "versteckte" Dateien wie .htaccess entfernen wollen, müssen Sie

$files = glob('path/to/temp/{,.}*', GLOB_BRACE);

305voto

Stichoza Punkte 4403

Wenn Sie alles aus einem Ordner (einschließlich der Unterordner) löschen möchten, verwenden Sie diese Kombination aus array_map , unlink y glob :

array_map( 'unlink', array_filter((array) glob("path/to/temp/*") ) );

Dieser Aufruf kann auch mit leeren Verzeichnissen umgehen (danke für den Tipp, @mojuba!)

117voto

Yamiko Punkte 4905

Hier ist ein modernerer Ansatz, der die Standard-PHP-Bibliothek (SPL) .

$dir = "path/to/directory";
if(file_exists($dir)){
    $di = new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS);
    $ri = new RecursiveIteratorIterator($di, RecursiveIteratorIterator::CHILD_FIRST);
    foreach ( $ri as $file ) {
        $file->isDir() ?  rmdir($file) : unlink($file);
    }
}

73voto

JakeParis Punkte 10813
foreach (new DirectoryIterator('/path/to/directory') as $fileInfo) {
    if(!$fileInfo->isDot()) {
        unlink($fileInfo->getPathname());
    }
}

24voto

Poelinca Dorin Punkte 9291

Dieser Code aus http://php.net/unlink :

/**
 * Delete a file or recursively delete a directory
 *
 * @param string $str Path to file or directory
 */
function recursiveDelete($str) {
    if (is_file($str)) {
        return @unlink($str);
    }
    elseif (is_dir($str)) {
        $scan = glob(rtrim($str,'/').'/*');
        foreach($scan as $index=>$path) {
            recursiveDelete($path);
        }
        return @rmdir($str);
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X