Readdir -> Scandir

Peter Schneider

Legendäres Mitglied
Hallo!

Ich brauche kurz Eure Hilfe, weil eines meiner PHP-Programme seit dem Server-Umzug Files nicht mehr alphabetisch auflistet...

Leider haben wir Readdir anstelle von Scandir vorliegen... (und keine Sortierfunktion eingebaut)

QUOTE
<?php
$dir=".";
$opendir=opendir($dir);

while($file=readdir($opendir))
{
if($file != "." && $file != ".." && eregi(".htm", $file))
{
$file=eregi_replace(".htm", "", $file);
echo "<p><b><a href=\"" . $file .".htm\">" . $file . "</a></p></b>";
}
}
closedir($opendir);



Der Funktionsweise: das Programm liest aus dem aktuellen Ordner die "htm"-Dateien aus und sollte alphabetisch eine Liste von Links ausgeben (basierend auf den Filenamen). Früher lief es alphabetisch, dann nach "Update"-Datum und neuerdings völlig unsortiert...

Hat mir jemand bitte ein Lösung basierend auf Scandir?
 
Wenn das nicht zu viele Dateien sind:

Einfach in einen Array einlesen und diesen sortiert ausgeben.

PS: Ich verwende kein PHP. Aber mit dieser Technik läßt sich das Problem programmiersprachenunabhängig lösen.
 
"Scandir" liest alphabetisch in ein Array ein... Das wäre tatsächlich die beste Lösung. Die Funktion ist erst seit PHP5 vorhanden, das "Programmschnipsel" ist leider noch ein wenig älter...
http://ch2.php.net/scandir

Wenn ich das programmiere, dann habe ich 3 h
ph34r.gif

Ein Profi bestimmt 2 Minuten,,,
Muss ich
sad.gif
 
Wenn ich die Doku nutze, dann tippe ich auf die folgende Lösung:

QUOTE $dir=".";

$file_list = scandir($dir);

for each $file in $file_list

{
if($file != "." && $file != ".." && eregi(".htm", $file))
{
$file=eregi_replace(".htm", "", $file);
echo "<p><b><a href=\"" . $file .".htm\">" . $file . "</a></p></b>";
}
}
Next $file



Aber: Ich nutze kein PHP, die beiden fetten Teile müßten durch eine PHP-for-each - Konstruktion ersetzt werden.

PHP-Nutzer bitte melden - nicht, daß ich wieder ein hier in PHP unlösbares Problem über server-daten per SQL erledige - und dann sogar noch einiges dazu einbauen kann, so daß der Nutzwert des Codes steigt.
smile.gif
 
Für die Allgemeinheit hier auch noch in korrektem PHP-Code:

CODE <?php

$dir = ".";
$filelist = scandir($dir);

foreach( $filelist as $file )
{
if( $file != "." && $file != ".." && eregi(".htm", $file) )
{
$file=eregi_replace(".htm", "", $file);
echo "<p><b><a href=\"" . $file .".htm\">" . $file . "</a></p></b>";
}
}

?>
 
Ja danke @Mike: funktioniert tadellos!

Danke nochmals an alle, die hier geholfen haben!

Es führt wohl kein Weg daran vorbei, die Grundzüge von PHP zu lernen
ph34r.gif
 
Zurück
Oben