Sök igenom alla undermappar med PHP

» »

Publicerad i PHP den

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;

  1. RecursiveIteratorIterator, som loopar genom alla element i ett strukturerat träd
  2. 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;

  1. Ange din sökväg i variabeln $path
  2. Sök igenom sökvägen med hjälp av funktionerna vi nämnde tidigare, och lägg dem i variabeln $files
  3. Loopa igenom resultatet vi fick när vi sökte igenom sökvägen med hjälp av funktionen foreach()
  4. 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
  5. Om det är en mapp går vi vidare till nästa med hjälp av continue
  6. 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:
  • Kategorier: PHP

Populära inlägg

Här hittar du de mest besökta artiklarna den senaste tiden.

Populära tjänster

Webbhotell

Inleed Special

29 kr / mån

  • Utrymme: 10 GB
  • Trafikmängd: 250 GB
  • Gratis SSL-certifikat: Ja
  • Startavgift: 0 kr

Virtuell server

Inleed VPS #1

199 kr / mån

  • Antal CPU-kärnor: 1 st
  • Minne: 8 GB
  • Utrymme: 100 GB
  • Trafikmängd: 3000 GB

Dedikerad server

Inleed Server #1

499 kr / mån

  • Antal CPU-kärnor: 2 st
  • Minne: 8 GB
  • Utrymme: 500 GB
  • Trafikmängd: 3000 GB

Backuphantering

Inleed Backup 100

19 kr / mån

  • Utrymme: 100 GB
  • Trafikmängd: 3000 GB
  • Startavgift: 0 kr

Domänhantering

Inleed DNS

0 kr / mån

  • Antal domännamn: Obegränsat

Co-location

Inleed Rackserver 1U

299 kr / mån

  • Trafikmängd: 3000 GB
  • Anslutning: 1000 Mbit/s
  • Reservström: UPS + Diesel
  • Startavgift: 0 kr

VPN-tjänster

NordVPN

33 kr / mån

  • Anslutningar: 6 st
Bäst webbhotell just nu
VPN-tjänster Pris Anslutningar
OVPN 49 kr 4 st
Inleed VPN 29 kr 2 st
NordVPN 33 kr 6 st
Ivacy VPN 22 kr 10 st

Vill du ha hjälp?

Ibland kan det vara svårt att göra ett val. Har du fortfarande inte hittat den information du söker, eller undrar du över något som saknas på sidan? Hör av dig till oss så hjälper vi dig!

Kontakta oss