Filtern

Hi Community.

Ich mache gerade eine Upload Seite für bestimmte Spiele, und möchte eine show.php machen, die beim Aufruf alle hochgeladenen Dateien anzeigt.
Im Moment sieht mein Code so aus:

<?php // Mit den folgenden Zeilen lassen sich // alle Dateien in einem Verzeichnis auslesen $handle=opendir ("upload"); echo "Games:<br>"; while ($datei = readdir ($handle)) { echo "$datei<br>"; } closedir($handle); ?>

Das klappt auch schon gut, nur möchte ich das Ganze noch Filtern. Beim Upload wird eine zufällige, 6 stellige Zahl an den Dateinamen der Datei gehängt. Nun möchte ich beim Auflisten der Dateien das Ganze filtern, also dass da nicht ‚spiel_jump453245.zip‘ steht, sondern ‚spiel jump‘. Es soll die Dateierweiterung nicht angezeigt werden, die Zahlen nicht angezeigt werden, und ein ‚_‘ soll zu einem Leerzeichen werden.

Ich weiss nich, wie ich das anstellen könnte, also frage ich hier.

Danke schon mal. :bp:

Moin,

es helfen dir da substr und str_replace weiter. Man könnte es vermutlich auch mit einem regulären Ausdruck lösen, aber dazu würde ich erst greifen, wenn man das mit den anderen Funktionen nicht hinbekommt.

Auf php.net findest du alle nötigen Informationen über die Funktionen.

MfG
myPages

Danke. :slight_smile:

Noch eine Frage: Gibt es eine Funktion wie ‘str_delete(…)’. Also, mit der ich die letzten 10 Zeichen eines Strings löschen kann? Und gibt es eine Funktion, die die Datei erweiterung einer Datei zurückgibt?

Nein, so eine Funktion gibt es nicht, du kannst sie aber selbst skripten.

function str_delete($string,$anz_zeichen) { return substr($string,0,strlen($string)-$anz_zeichen); }
Die andere Funktion wäre pathinfo().

Danke, funktioniert. :slight_smile:

Noch eine Frage:

Jetzt werden mir die ganzen Dateien zwar aufgelistet, aber unsortiert.
Wie mache ich es, dass sie schön nach Namen sortiert sind?
Ausserdem sind hier: gmup.dig3.net/show.php manchmal 2 Zeilen Abstand zum nächsten Namen… Woran liegt das?

Mein Code sieht jetzt so aus:

  <?php
   function str_delete($string,$anz_zeichen) {
    return substr($string,0,strlen($string)-$anz_zeichen);
   }
   // Mit den folgenden Zeilen lassen sich
   // alle Dateien in einem Verzeichnis auslesen
   $handle = opendir ("upload");
   echo "Games:<br>";
   while ($datei = readdir ($handle)) {
    $re = str_delete ($datei, 9);
    echo "<a href='upload/$datei'>$re</a><br>";
   }
   closedir($handle);
  ?>

Ein Blick in den Quelltext würde als Antwort schon genügen.

<a href='upload/bild119318.png'>bild1</a><br> <a href='upload/index.php'></a><br>

Es gibt noch dateien in dem Ordner, die nicht deinem “Muster” entsprechden… index.php z.b. hat exakt 9 Zeichen, weshalb deine tolle str_delete funktion natürlich alle Zeichen löscht.
Hinzukommen noch die “Pseudoverzeichnisse”, die in (fast) jedem Verzeichnis zu finden sind: “…” und “.”