L learn Medlem sedan jan. 2005 1 130 inlägg Frågan 9 nov. 2006 12:51 #1 Jag har en katalog som innehåller en massa filer. Nu vill jag via ett PHP-skript kunna radera filer som börjar på ett visst ord.
Exempel:
I mappen finns: tabort3176, tabort132, tabort45, taintebort198, taintebort72
Kör jag delete('tabort') så innehåller mappen sedan: taintebort1, taintebort2
Hur gör jag detta på snyggaste och smidigaste sätt?
Troxy Medlem sedan mars 2004 1 505 inlägg Funktionen glob() är perfekt för detta, eftersom den söker reda på alla filer som har ett visst filnamn.
Sedan får du tillbaka träffarna som en array, och då loopar du bara igenom den och raderar filen med unlink().
foreach (glob("tabort*") as $filename)
{
echo unlink($filename) ? "$filename raderades.\n" : "$filename kunde inte raderas!\n";
}
/r Jag ändrade lite så att det även skrivs ut ett fel om filen inte kan raderas.
L learn Medlem sedan jan. 2005 1 130 inlägg Guld värt, tack! (y) :birp
L learn Medlem sedan jan. 2005 1 130 inlägg Hmm,
Får det inte riktigt att funka...
$filnamn = 'test';
foreach (glob("webb/filer/" . $filnamn . "_*") as $fil) {
unlink($fil);
}
Filerna som heter 'test_323.pdf', 'test_198.doc' etc raderas inte... Sökvägen är korrekt.
Vad gör jag för fel?
/r Jag upptäckte att sökvägen ändå var fel... Sorry :r
L learn Medlem sedan jan. 2005 1 130 inlägg Jag har stött på ett nytt problem! Om det inte finns några filer som matchar så får jag följande felmeddelande:
Warning: Invalid argument supplied for foreach() in /home/..../index.php on line 95
Jag vet inte hurvida filer finns eller ej innan funktionen körs.
Hur göra? Tips!
spango Medlem sedan juni 2000 8 205 inlägg Om du läser dokumentationen kan du se att glob returnerar FALSE om inga filer matchar. Kolla returvärdet innan du foreach:ar på det.