TS: PHP: Rekursives Einlesen von Ordnern und Dateien liefert doppelte Werte

Beitrag lesen

Hello,

die Funktion kann sich mMn noch aufhängen, da Du symbolische Links nicht abgefangen hast.

Stimmt. is_link sollte helfen.

Man müsste sich nur überlegen, ob man solche Links ignoriert oder ob man prüft, ob man den Ordner, auf den sie verweisen, schon eingelesen hat.

Ich hätte gerne den Rest auch noch dazu geschrieben, aber das war mir dann vom Tablet doch zu murksig...

Deshalb jetzt nachgeliefert:

  • is_link() benutzen oder umstapeln in Sammelarray mit vorheriger Kontrolle, ob die Eintragung schon funktioniert.
  • als erstes die Treffer immer auflösen mit realpath(), dann gibts auch Überraschungen mit merkwürdigen relativen Namen und mit "007"-Dateien (siehe nächster Punkt)
  • dann kann man die resultierenden Namen als Schlüssel für das assoziative Ergebnisarray benutzen und kann bei DIRs vorher mit isset() prüfen, ob man sie schon bearbeitet hat. Als Values kann man sich dann z. B. ['type'] = "D", "F", "DL" oder "FL" mit abspeichern und sich ggf. noch die Größe, Datum und andere Angaben holen.

Das Array ist dann bezüglich der Pfade linearisiert, also nicht mehr verschachtelt.

Liebe Grüße
Tom S.

--
Es gibt nichts Gutes, außer man tut es
Andersdenkende waren noch nie beliebt, aber meistens diejenigen, die die Freiheit vorangebracht haben.