PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dateien löschen mit php - unvollständiger Dateiname


Evalley
2006-08-28, 16:58:33
erledigt

darph
2006-08-28, 17:09:21
Ich nehme an, du meinst sprintf (http://de2.php.net/manual/de/function.sprintf.php)?

foreach($file as $filename) {
if ($filename == sprintf("%d_%d_lalala.xml",$id, $day) {
hauwechdiescheise($filename);
}
}

€dit: Achso. Du kennst den anderen Teil nicht. Mein Fehler. ;(

Dann könntest du nach "_" explodieren (http://de2.php.net/manual/de/function.explode.php) und einfach die ersten x Felder im Array mit dem Gewünschten vergleichen.

Entil'Sar
2006-08-28, 17:25:11
Ich bin grad dabei dieses Tutorial (http://tut.php-q.net/regex.html) über php zu lesen. Darin wird eine Engine für reguläre Ausdrücke vorgestellt, damit sollte das soweit ich das gelesen habe und mich meine Erinnerung in Bezug auf Reguläre Ausdrücke nicht ganz im Stich lässt dein Problem lösen lassen. Denn mit regulären Ausdrücken kann man genau das was du willst gut ausdrücken und dann auf die einzelnen Elemente zugreifen. z.B. ZahlZahlBuchstabe.png
Du müsstest dann "nur" die Dateinamen parsen und falls es "passt" die Datei löschen.

darph
2006-08-28, 17:28:18
Regular Expressions wäre natürlich die elegenteste Lösung.

MadMan2k
2006-08-28, 17:48:36
Regular Expressions wäre natürlich die elegenteste Lösung.
nein regular expressions sind langsam vor allem wenn man sich damit nicht auskennt.
Man sollte sie soweit wie möglich vermeiden.

Xmas
2006-08-28, 18:15:48
nein regular expressions sind langsam vor allem wenn man sich damit nicht auskennt.
Man sollte sie soweit wie möglich vermeiden.
Langsam ist relativ, wer gigabyteweise Texte filtern muss und dabei auf jede Sekunde achtet, wird vielleicht darauf verzichten. Aber wer PHP benutzt hat wohl nicht die allerhöchsten Anforderungen an Geschwindigkeit. Und in diesem konkreten Fall muss man sich schon absichtlich blöd dranstellen um eine schlecht konstruierte Regex zu bekommen.
In den üblichen Anwendungsfällen gibt es eigentlich nichts was gegen Regular Expressions sprechen würde, aber elegant sind sie allemal.

Trap
2006-08-28, 18:21:30
Wenn es mit einfach Platzhaltern wie * oder ? geht:
http://www.php.net/glob

Erlaubte Pattern sind in http://www.tcl.tk/man/tcl8.0/TclCmd/glob.htm beschrieben.

MadMan2k
2006-08-28, 18:43:55
Langsam ist relativ, wer gigabyteweise Texte filtern muss und dabei auf jede Sekunde achtet, wird vielleicht darauf verzichten. Aber wer PHP benutzt hat wohl nicht die allerhöchsten Anforderungen an Geschwindigkeit. Und in diesem konkreten Fall muss man sich schon absichtlich blöd dranstellen um eine schlecht konstruierte Regex zu bekommen.
In den üblichen Anwendungsfällen gibt es eigentlich nichts was gegen Regular Expressions sprechen würde, aber elegant sind sie allemal.
je nachdem wieviele dateien in dem verzeichniss sind machts schon einen Unterscheid ob man:
substr($str, 0, 5) == '52_10' oder preg_match('/52_10.*/', $str) benutzt, denn der ausdruck ist schlecht konstruiert :D

Evalley
2006-08-28, 20:38:23
erledigt

Gast
2006-08-28, 23:09:34
glob sollte eigentlich wirklich genügen...