• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage Datei(en) aus mehreren Ordnern löschen mit bestimmten Namen bzw. Präfix

xSTVNx

Mitglied
Hallo,

ich möchte, dass mehere Ordner durchlaufen werden, um darin einerseits jeweils eine Datei mit einem bestimmten 5-stelligen Namen (bestehend aus a-z & 1-9) und andererseits der selbe Name, aber hier ist dient dieser quasi als ein Präfix, konkret haben diese Dateinamen noch ein oder fünf zusätzliche Zeichen (a-z & 1-9).

PHP:
$folder_base = "img/";
$file_name = "abcde";
$suffix = ????? // Wie gebe ich diesen korrekt an?

$folders2check = array(   
    "svg/d/",
    "png/d/100/",
    "png/d/200/",
    "png/d/300/",
    "png/d/400/",
    "png/d/500/",
    "png/d/800/",
    "png/d/1000/",
    "png/p/100/",
    "png/p/200/",
    "png/p/300/",
    "png/p/400/",
    "png/p/500/",
    "png/p/800/",
    "png/p/1000/",
);

foreach( $folders2check as $f ){

    $file = $folder_base.$f.$file_name.$suffix.".png";
  
    if( file_exists($file) ){
        unlink($file);
    }
  
    $file = $folder_base.$f.$file_name.$suffix.".svg";
  
    if( file_exists($file) ){
        unlink($file);
    }
}

Also meine Fragen sind konkret:
  1. Wie definiere ich die $suffix-Variable so, dass alle Zeichen von a-z und 0-9 getroffen werden, und das dieser 0-, 1- oder 5-stellig ist?
  2. Lässt sich die Suche nach .png und .svg nicht auch noch bündeln?
Danke und LG
 
Werbung:
Nachtrag:

Mir ist gerade aufgefallen, dass wohl mein ganzer Ansatz unnotwendigerweise verkompliziert ist. Stattdessen wäre es wohl wesentlich sinnvoller, schlicht alle Ordner durchzugehen bzw. die enthaltenenDateien aufzulisten und deren Dateinamen lediglich auf die ersten 5 Zeichen zu überprüfen. :wink:

Das sieht aktuell so aus:

PHP:
$folder_base = "img/";
$file_name = "abcde";

$folders2check = array(  
    "svg/d/",
    "png/d/100/",
    "png/d/200/",
    "png/d/300/",
    "png/d/400/",
    "png/d/500/",
    "png/d/800/",
    "png/d/1000/",
    "png/p/100/",
    "png/p/200/",
    "png/p/300/",
    "png/p/400/",
    "png/p/500/",
    "png/p/800/",
    "png/p/1000/",
);

foreach( $folders2check as $folder ){
    $path  = $folder_base.$folder;
    $files = array_diff(scandir($path), array('.', '..'));
   
    foreach( $files as $file ){
        if( substr( $file, 0, 5 ) === $file_name ){
            unlink($folder.$file_name);
        }
    }
}
Ich konnte es nurnoch nicht in der Praxis testen, weil die das Script aufrufende Ajax-Anweisung gerade noch rumzickt. :rolleyes:
 
Werbung:
Zurück
Oben