webForumDet fria alternativet

Radera undermapp

6 svar · 640 visningar · startad av Trankan

TrankanMedlem sedan okt. 2006129 inlägg
#1

Hej!

Skulle vilja ha en funktion som raderar en undermapp och dess innehåll utan att radera den mapp som undermappen ligger i. Är det någon som vet hur man löser det här?

MarkusHelinMedlem sedan nov. 200742 inlägg
#2

kolla detta exemplet:
http://se2.php.net/manual/en/function.rmdir.php#82764

sitter du på *unix kan du köra system("rm -rf undermapp/");

TrankanMedlem sedan okt. 2006129 inlägg
#3

Testade faktiskt just det exemplet, men det raderar även den mapp som undermappen ligger i. :l

MarkusHelinMedlem sedan nov. 200742 inlägg
#4

använd funktionen is_dir() för kolla om filen är en mapp. Är filen en mapp får du välja att inte radera ut den.

te.x

if!(is_dir($var)){
rm_dir($var) }
else {
//gör ingenting
}
TrankanMedlem sedan okt. 2006129 inlägg
#5

Förstår inte riktigt? Mappen som sökvägen går till ska ju tas bort, men grejen är den att mappen inte ligger i roten på FTP:n utan i en annan mapp som ska vara kvar. Det kan även tilläggas att PHP-filen med scriptet ligger inte i samma mapp som den mapp som ska tas bort.

vicMedlem sedan apr. 2006244 inlägg
#6

Något i den här stilen bör ju fungera

<?php

function delete_dir_content($path, $delete_files=false) {

  if ($handle = opendir($path)) {

    while (false !== ($file = readdir($handle))) {
        if(is_dir($file)) {
           delete_dir_content($path.$file, true);
           rmdir($path.$file);
        }
       elseif($delete_files) {
          unlink($file); 
       }
    }

    closedir($handle);
  }
}
?>

Om detta blev rätt nu så raderar funktionen alla undermappar och dess innehåll, filerna i mappen behålls dock. Vill du radera allt i mappen så anropar du delete_dir_content('mapp/', true); vill du enbart radera alla undermappar anropar du delete_dir_content('mapp/');

// Vic

TrankanMedlem sedan okt. 2006129 inlägg
#7

Tack för svaret Vic! Vet inte om jag var otydlig, men det kommer att finnas flera undermappar och jag vill kunna radera en specifik mapp, så jag misstänker att din funktion inte fungerar så bra?

137 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)