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.
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.
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?
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);
?>
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 “.”