Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]usuwanie całej zawartości katalogów
Forum PHP.pl > Forum > Przedszkole
rea
Jak zrobić, aby w php usunąć zawartość wskazanego katalogu? Mam taki kod:

  1. function removeDir($path)
  2. {
  3. $dir = new DirectoryIterator($path);
  4. foreach ($dir as $fileinfo)
  5. {
  6. if ($fileinfo->isFile() || $fileinfo->isLink())
  7. {
  8. unlink($fileinfo->getPathName());
  9. }
  10. elseif (!$fileinfo->isDot() && $fileinfo->isDir() &&$fileinfo->getPathName($path))
  11. {
  12. removeDir($fileinfo->getPathName());
  13. }
  14. }
  15. rmdir($path);
  16. }


Jednak on usuwa też katalog który został podany, jak temu zapobiec, aby była skasowana tylko jego cała zawartość (pliki i katalogi).
Rysh
Spróbuj coś takiego:
  1. function removeDir($path, $del = false)
  2. {
  3. $dir = new DirectoryIterator($path);
  4. foreach ($dir as $fileinfo)
  5. {
  6. if ($fileinfo->isFile() || $fileinfo->isLink())
  7. {
  8. unlink($fileinfo->getPathName());
  9. }
  10. elseif (!$fileinfo->isDot() && $fileinfo->isDir() &&$fileinfo->getPathName($path))
  11. {
  12. removeDir($fileinfo->getPathName(), TRUE);
  13. }
  14. }
  15. if($del) {
  16. rmdir($path);
  17. }
  18. }
Gość
Rysh nie nabijaj bezsensownie postów, to Twoje ulubione zadanie w innych tematach też.
Niby jak mam dać FALSE skoro rmdir jest potrzebne?
W PHP nie ma funkcji która usunie zawartość całego katalogu?
IProSoft
Nie ma.
Podał Ci właśnie takie rozwiązanie jakiego potrzebujesz, przyjżyj się co daje Ci true|false.
Michael2318
Ja używam tego:

  1. function destroy($dir) {
  2. $mydir = opendir($dir);
  3. while(false !== ($file = readdir($mydir))) {
  4. if($file != "." && $file != "..") {
  5. chmod($dir.$file, 0777);
  6. if(is_dir($dir.$file)) {
  7. chdir('.');
  8. destroy($dir.$file.'/');
  9. rmdir($dir.$file) or DIE("couldn't delete $dir$file<br />");
  10. }
  11. else
  12. unlink($dir.$file) or DIE("couldn't delete $dir$file<br />");
  13. }
  14. }
  15. closedir($mydir);
  16. }
Rysh
Cytat(Gość @ 12.06.2012, 09:10:10 ) *
Rysh nie nabijaj bezsensownie postów, to Twoje ulubione zadanie w innych tematach też.
Niby jak mam dać FALSE skoro rmdir jest potrzebne?
W PHP nie ma funkcji która usunie zawartość całego katalogu?

Wytłumacz mi Twoje rozumowanie "bezsensownych" postów?
Gdzie napisałem Ci coś bezsensownego?

Twój kod -> usuwa całą zawartość folderu wraz z folderem.
Twój kod +2 linijki ode mnie -> usuwa całą zawartość folderu zostawiając folder pusty.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.