Avatar billede ostehamster Nybegynder
25. maj 2003 - 13:54 Der er 7 kommentarer og
1 løsning

Brug af * når man sletter en fil med php.

Hejsa

Jeg har nogle midlertidige filer, som skal slettes hver gang en bruger logger af, filerne hedder noget alle:
beta-6-60d6c9f0cb2f143cc08705379d1e9d21.gif
beta-6-355b12668ba05c25899ea7ba2ae783ae.jpg

Jeg kunne så godt tænke mig at slette alle filer der starte med "beta-6-", hvordan gør man det?

mvh
Christoffer
Avatar billede schaefner Juniormester
25. maj 2003 - 14:01 #1
Utestet:

<?php
$dir = 'mappe/';
if ($handle = opendir($dir)) {
    while (false !== ($fil = readdir($handle))) {
        if ($fil != "." && $fil != ".." && substr($fil,0,7) == "beta-6-") {
            unlink($dir.$fil);
        }
    }
    closedir($handle);
}
?>
Avatar billede ostehamster Nybegynder
25. maj 2003 - 14:37 #2
Det virker helt fint

Jeg glemte måske lige at uddybe lidt :)

beta er brugernavn, og 6 er bruger_id, så det kan jo ændre sig.

er den eneste mulighed så, at tælle antal tegn i brugernavn og id, og så laver substr($fil,0,7) om til substr($fil,0,(antal tegn i brugernavn og id, plus 1)) ?
Avatar billede schaefner Juniormester
25. maj 2003 - 14:46 #3
Nej, det er ikke den eneste mulighed. Her er en anden:

<?php
$brugernavn = 'beta';
$bruger_id = 6;
$dir = 'mappe/';
if ($handle = opendir($dir)) {
    while (false !== ($fil = readdir($handle))) {
        if ($fil != "." && $fil != ".." && eregi("^$brugernavn-$bruger_id", $fil)) {
            unlink($dir.$fil);
        }
    }
    closedir($handle);
}
?>

Men det andet er skam også en mulighed.
Avatar billede schaefner Juniormester
25. maj 2003 - 14:52 #4
Og den anden løsning:

<?php
$brugernavn = 'beta';
$bruger_id = 6;
$dir = 'mappe/';
if ($handle = opendir($dir)) {
    while (false !== ($fil = readdir($handle))) {
        if ($fil != "." && $fil != ".." && substr($fil,0,strlen($brugernavn)+2) == "$brugernavn-$bruger_id") {
            unlink($dir.$fil);
        }
    }
    closedir($handle);
}
?>
Avatar billede ostehamster Nybegynder
25. maj 2003 - 14:52 #5
eregi, er det det samme som "fjern fra" :)

og hvad er ^ til?

og sidst men ikke mindst, smidder du lige er svar :)
Avatar billede schaefner Juniormester
25. maj 2003 - 14:54 #6
eregi() laver en regular expression og ^ tester om det vi søger efter står i starten af filnavnet, hvilket det jo skal i det tilfælde.

Se iøvrigt her: http://phpbuilder.com/columns/dario19990616.php3 ang. regular expressions.
Avatar billede ostehamster Nybegynder
25. maj 2003 - 15:00 #7
Kanon

Takker
Avatar billede schaefner Juniormester
25. maj 2003 - 15:00 #8
Var så lidt :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester