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... Zitieren
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 Zitieren
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 Zitieren
baba007 Geschrieben 13. August 2006 Geschrieben 13. August 2006 Tipp von mir: reguläre Ausdrücke. Deine Methode ist, obwohl sie funktioniert, nicht gut Zitieren
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? Zitieren
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) Zitieren
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 ;-) Zitieren
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 Zitieren
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 Zitieren
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: Zitieren
Shadowman Geschrieben 16. August 2006 Geschrieben 16. August 2006 biste denn jetzt weiter gekommen? Zitieren
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.... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.