webForumDet fria alternativet
Logga in / Bli medlem

Radera undermapp

PHP

6 svar · 642 visningar · startad av Trankan

Medlem sedan okt. 2006129 inlägg
Frågan#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?

Medlem 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/");

Medlem sedan okt. 2006129 inlägg
#3

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

Medlem 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
}
Medlem 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.

Medlem 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

Medlem 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?

269 ms totalt · 4 externa anrop · v20260731065814-full.14655e19
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)