pc-nico Geschrieben 12. August 2006 Geschrieben 12. August 2006 Hallo Leute ich lese alle Dateien aus einem Ordner ein und schreibe die namen in ein Array. Ich irgnoriere Dateien wie Index.php siehe Code: $handle=opendir($ordner); // Ordner in dem die Bilder sind wird geöffnet while ($file = readdir ($handle)) // while, weil nicht klar ist wieviele Dateien im Ordner sind, also werden hier die Dateien ausgelesen { if ($file != "." && $file != ".." && $file != "thumb" && $file!= "index.php" && $file!="Thumbs.db") { $array[] = $file; // Die Dateien aus dem Ordner werden in ein array gepackt } } closedir($handle); // Schließt den Ordner wieder sort($array); // Sortiert das $array [/PHP] Jetzt möchte ich auch Dateien ausschließen, die mit einem Unterstrich (_) beginnen. kann mir jemand sagen wie das geht? Wenn ich es so versuche [code] if ($file != "_*") [/code] geht es nicht...
robotto7831a Geschrieben 12. August 2006 Geschrieben 12. August 2006 Du ermittelst mit substr das erste Zeichen und prüfst ob es ungleich Unterstrich ist. Wenn ja dann hinzufügen. Frank
pc-nico Geschrieben 12. August 2006 Autor Geschrieben 12. August 2006 Danke für den Denkanstoß.... Hier die Lösung if ($file != "." && $file != ".." && $file != "thumb" && substr($file, 0, 1) != "_" && $file!= "index.php" && $file!="Thumbs.db") { ..... } [/PHP] Geht wunderbar thx
baba007 Geschrieben 13. August 2006 Geschrieben 13. August 2006 Tipp von mir: reguläre Ausdrücke. Deine Methode ist, obwohl sie funktioniert, nicht gut
pc-nico Geschrieben 13. August 2006 Autor Geschrieben 13. August 2006 @baba007 Ich dachte auch das die Antwort Reguläre Ausdrücke als erste kommt... Leider habe ich von denen keinen Plan. Warum ist die Methode, die ich jetzt verwende nicht gut? Kannst mir den regulären Ausdruck mal nennen?
geloescht_JesterDay Geschrieben 14. August 2006 Geschrieben 14. August 2006 Kannst mir den regulären Ausdruck mal nennen? // Ausschließen von Dateien: // . und .. (oder ... etc) // alle Dateien die mit _ beginnen // index.php // thumb und thumbs.db // Groß-/Kleinschreibung nicht beachtet preg_match('/^((_.*|\\.)+|index.php|thumb(s\.db)?)$/i', "Dateiname.php", $match) Niemand sagt dass deine Methode nicht gut ist, aber das heißt ja nicht, dass man es nicht anders, eleganter und besser machen kann Klar sind RegEx auf den ersten Blick sehr kompliziert, aber viele und-Verknüpfungen sind auch nicht gerade das übersichtlichste. Am besten halt zur RegEx ein Kommentar, was du damit tun willst... Edit: Ach ja, was bei deiner Methode schlecht ist, ist die einfache Art diese zum Umgehen... thumbs.db wird mit deiner Methode z.B. nicht gefunden (wegen der Schreibweise)
pc-nico Geschrieben 14. August 2006 Autor Geschrieben 14. August 2006 ich bin von diesen Regulären Ausdrücken immer wieder begeistert... Sollte mich doch mal intensiver damit beschäftigen. Was bedeutete der Teil mit Dateiname.php? Ist das die Eingabe? PS: Die Datei Thumb.db lass ich auch nur aus, für den Fall das ich mal eine mit hochgeladen habe. Im Normalfall verwende ich die Miniaturansicht von Windows nicht. Und dann wird diese Datei ja nicht erstellt. Wenn sie aber erstellt wird, ist sie in der Regel am Anfang groß geschrieben ;-)
Shadowman Geschrieben 15. August 2006 Geschrieben 15. August 2006 mit if($file['name'][0]!=_") könnte es gehen...du musst halt gucken, wie du an den dateinamen kommst...bin mir mit dem ['name] seeehr unsicher, ob es die bezeichnung war...das solltest du selbst gucken, aber dann kannste ja wie bei jedem anderen string auch den ersten buchstaben ausgeben lassen oder wie bei dir den halt vergleichen
geloescht_JesterDay Geschrieben 15. August 2006 Geschrieben 15. August 2006 Was bedeutete der Teil mit Dateiname.php? Ist das die Eingabe? Das ist der String, den du überprüfst. EDIT: Und Thumbs.db war nur ein Beispiel, eine Datei Index.php hätte z.B. dasselbe Problem EDIT 2: Zur Verwendung von preg_match siehe: http://de.php.net/preg_match
pc-nico Geschrieben 15. August 2006 Autor Geschrieben 15. August 2006 mit if($file['name'][0]!=_") könnte es gehen...du musst halt gucken, wie du an den dateinamen kommst...bin mir mit dem ['name] seeehr unsicher, ob es die bezeichnung war...das solltest du selbst gucken, aber dann kannste ja wie bei jedem anderen string auch den ersten buchstaben ausgeben lassen oder wie bei dir den halt vergleichen Danke für den Lösungsversuch.. In der Variablen $file steht bereits der Dateiname, ich schreibe ihn bei jedem Schleifendurchlauf dort rein: while ($file = readdir ($handle)) [/PHP] @JesterDay Ich weiß RTFM :mod: THX:cool:
pc-nico Geschrieben 16. August 2006 Autor Geschrieben 16. August 2006 hab es im Moment so wie ich es oben gepostet habe (also mit Substr) und es läuft wunderbar. Werd aber nochmal die Methode mit den RegAusdrücken probieren....
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden