andi d.: 2 Fragen: Encoding-Prob(UTF-8) + Reihenfolge d. Daten auf Server

Hallo,
ich lese mit einem PHP-Skript alle (Unter)Ordner und Dateien auf meinem Server aus und lasse sie ausgeben. Funktioniert eigentlich 1A, gibt aber 2 Probleme.

Problem 1:
Die Reihenfolge der Ordner und Dateien innerh. der Ordner scheint zufällig zu sein. Zumindest ist sich nie alphabetisch. Gibt es eine andere Möglichkeit einer entspr. Ausgabe, ohen alles erst in ein Array und eine DB zu packen, zu sortieren und wieder auszugeben?

Problem 2:
Auf meinem lokalen Testsystem (Mac mit Apache bzw MAMP) werden Umlaute korrekt wiedergegeben.
Lad ich alles auf den Server erscheint dort leider z.B. "�berblick.pdf". Der entspr. link dorthin funktioniert dann natürlich auch nicht. Mir ist klar, dass Umlaute eigentl. nix in Dateinamen zu suchen haben. Trotzdem verstehe ich das unterschiedl. Verhalten nicht.
Das PHP-Skript ist UTF-8 codiert und entspr. abgespeichert. Muss man Server auch irgend einen entspr. Schalter o.ä. umlegen?

Vielen Dank schonmal & Gruß
Andi

  1. Hi!

    Die Reihenfolge der Ordner und Dateien innerh. der Ordner scheint zufällig zu sein. Zumindest ist sich nie alphabetisch. Gibt es eine andere Möglichkeit einer entspr. Ausgabe, ohen alles erst in ein Array und eine DB zu packen, zu sortieren und wieder auszugeben?

    Warum sollte denn der Inhalt erst vom Betriebssystem in eine Ordnung gebracht werden, wenn es gar nicht weiß, welche Ordnung der Anwender letzlich haben will? Jedenfalls gibt es die PHP-Funktion glob(), die ein bereits sortiertes Ergebnis liefert.

    Auf meinem lokalen Testsystem (Mac mit Apache bzw MAMP) werden Umlaute korrekt wiedergegeben.
    Lad ich alles auf den Server erscheint dort leider z.B. "�berblick.pdf".

    Auf welche Weise lädst du diese Datei dorthin?

    Der entspr. link dorthin funktioniert dann natürlich auch nicht. Mir ist klar, dass Umlaute eigentl. nix in Dateinamen zu suchen haben. Trotzdem verstehe ich das unterschiedl. Verhalten nicht.

    Besser ist es, beim Arbeiten mit Dateisystemen auf Nicht-ASCII-Zeichen zu verzichten, wenn das Script kompatibel zu unterschiedlichen Systemen sein soll. PHP ist ja derzeit von Haus aus nicht wirklich UTF-8-fähig. Zudem ist mir kein Mechanismus bekannt, der zwischen PHP und dem Betriebs-/Dateisystem eine zu verwendende Kodierung bei Dateinamen aushandelt. Es ist also mehr oder weniger Zufall, was ein Server mit einem wie auch immer kodierten Nicht-ASCII-Zeichen macht.

    Lo!

    1. hallo

      Warum sollte denn der Inhalt erst vom Betriebssystem in eine Ordnung gebracht werden, wenn es gar nicht weiß, welche Ordnung der Anwender letzlich haben will? Jedenfalls gibt es die PHP-Funktion glob(), die ein bereits sortiertes Ergebnis liefert.

      hm, ich hab mir die Funktion mal angesehen kapier aber nicht so ganz was sie macht bzw. wie ich sie in meinem Fall einsetzen soll. "glob() findet Dateipfade, die mit dem angegebenen Muster pattern übereinstimmen." Ich will ja nix bestimmtes suchen, sondern alle vorh. Dateien und Ordner sortiert ausgeben.

      Oder steh ich grad auf dem Schlauch?

      danke & gruß
      andi

      1. Hi!

        "glob() findet Dateipfade, die mit dem angegebenen Muster pattern übereinstimmen." Ich will ja nix bestimmtes suchen, sondern alle vorh. Dateien und Ordner sortiert ausgeben.

        Das ist doch nett von der Funktion, dass du sogar ein Muster angeben kannst, um die Auswahl beschränken zu können. Wenn du das nicht willst, nimm ein Muster, das auf alle Dateien passt: *

        Lo!

  2. Vielleicht hilft dir dieser Blogeintrag.