Sök igenom alla undermappar med PHP
Publicerad i PHP
Så här gör du för att söka igenom en mapp och alla dess undermappar med hjälp av PHP.
Att söka igenom en katalog för att bearbeta filer är oftast inga svårigheter med PHP; du använder bara funktionen scandir och anger vilken katalog du vill söka i. Resultatet får du som en array som du sedan kan bearbeta så som du själv önskar. Ett exempel är att gå igenom den steg för steg med hjälp av en foreach-loop.
En begränsning med den metoden är dock att scandir inte automatiskt söker igenom undermappar — så hur gör man det?
Sök igenom undermappar
För att söka igenom mappen och samtliga undermappar använder vi två PHP-funktioner;
- RecursiveIteratorIterator, som loopar genom alla element i ett strukturerat träd
- RecursiveDirectoryIterator, som skapar ett strukturerat träd över den sökväg vi väljer
När dessa två kombineras får vi precis det vi vill; en tydlig genomgång av alla element i det underlag vi önskar — alltså allt som finns i mappen samt alla dess undermappar.
PHP-kod
För att åstadkomma detta i ett skarpt PHP-skript har jag skrivit ihop följande:
$path = 'din/mapp/'; $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)); foreach ($files as $file) { if ($file->isDir()) { continue; } $list[] = $file->getPathname(); }
För att förklara vad som sker i det här skriptet så är det uppbyggt så här;
- Ange din sökväg i variabeln $path
- Sök igenom sökvägen med hjälp av funktionerna vi nämnde tidigare, och lägg dem i variabeln $files
- Loopa igenom resultatet vi fick när vi sökte igenom sökvägen med hjälp av funktionen foreach()
- Vi kontrollerar om det är en katalog med hjälp av $file->isDir(), vilket ger true om det är en mapp samt false om det inte är en mapp
- Om det är en mapp går vi vidare till nästa med hjälp av continue
- Om det istället är en fil fyller vi på variabel med namnet $list med både namn och sökväg till filerna i en array
Nu har vi en komplett lista över alla filer som finns i mappen vi vill söka i, samt alla dess undermappar.
Skriptet är inte för långt utan har en bekväm längd, och även om artikeln blir ganska lång — eftersom jag vill förklara varför och hur jag gjort som jag gjort — är detta en bekväm metod för att gå igenom alla filer.
Detaljer
- Titel: Sök igenom alla undermappar med PHP
- Publicerad:
- Skribent: Christian W.
- Kategorier: PHP