Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[PHP]Dateien aus Ordner in Array lesen/ ausschließen von dateien mit _ am anfang??

Empfohlene Antworten

Veröffentlicht

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...

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

Tipp von mir: reguläre Ausdrücke. Deine Methode ist, obwohl sie funktioniert, nicht gut

@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?

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) ;)

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 ;-)

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 ;)

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

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:

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....

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.