Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]usuwanie całej zawartości katalogów
-rea-
post 11.06.2012, 19:41:41
Post #1





Goście







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).
Go to the top of the page
+Quote Post
Rysh
post 11.06.2012, 20:41:03
Post #2





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

Ostrzeżenie: (0%)
-----


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 to the top of the page
+Quote Post
-Gość-
post 12.06.2012, 08:10:10
Post #3





Goście







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?
Go to the top of the page
+Quote Post
IProSoft
post 12.06.2012, 08:27:52
Post #4





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

Ostrzeżenie: (0%)
-----


Nie ma.
Podał Ci właśnie takie rozwiązanie jakiego potrzebujesz, przyjżyj się co daje Ci true|false.


--------------------
Manual prawdę Ci powie.
Go to the top of the page
+Quote Post
Michael2318
post 12.06.2012, 09:05:58
Post #5





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

Ostrzeżenie: (0%)
-----


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. }
Go to the top of the page
+Quote Post
Rysh
post 12.06.2012, 09:30:45
Post #6





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 21.06.2025 - 15:17