Problem mit readdir()

Hallo,

ich muss zugeben, dass ich mich mit dem Thema Dateien und Ordner auslesen/anzeigen noch nicht viel auseinander gesetzt habe. Deswegen habe ich ein kleines Problem.
Ich habe folgendes Script:

[PHP]<?php
$dir = opendir(‚img/avas/‘);

while (false !== ($file = readdir($dir))) {
echo „<img src="img/avas/“.$file."" alt="Avatar" /> ";
}
closedir($dir);
?>[/PHP]

Das Funktioniert so auch super, alle Grafiken des Ordners werden angezeigt.
Komischerweise werden aber noch zwei fehlerhafte weitere Grafiken vor den eigentlichen Bildern angezeigt (alt-Text wird angezeigt). Diese zwei Grafiken haben jeweils den Pfad „img/avas/“ und „img/“, also die zwei Unterordner.
Ich habe keine Ahnung, woran das liegt. Kann mir da wer helfen?

MfG Icy

readdir liest alles mit auch die verzeichnisse ./ und …/

[PHP] <?php
$dir = opendir(‚img/avas/‘);

while (false !== ($file = readdir($dir))) {
if($file == „.“ || $file == „…“) continue;
echo „<img src="img/avas/“.$file."" alt="Avatar" /> ";
}
closedir($dir);
?> [/PHP]

readdir() liest auch Verzeichnisse und die ersten sind grundsätzlich ‚.‘ (aktuelles Verz.) und ‚…‘ (Elternverz.).

Prüf doch einfach, ob die aktuelle Datei ein Bild ist. Sollte so gehen:
[php]<?php $dir = "img/avas/"; $handle = opendir($dir); while($file = readdir($handle)) { if(@getimagesize("$dir/$file")) echo "\"Avatar\" "; } ?>[/php]

EDIT: Zu langsam…

[php]<?php
$dir = opendir(‚img/avas/‘);

while (false !== ($file = readdir($dir))) {
if($file == ‚.‘ || $file == ‚…‘){ continue; }
echo „<img src="img/avas/“.$file."" alt="Avatar" /> ";
}
closedir($dir);
?> [/php]

liegt daran das es ja auch noch . als referenz auf sich selbst und … als referenz auf einen existierenden unterordner gibt ^^

//Edit: ich empfehle Franks methode da sie einfach schneller ist :wink:
auch wenn ich es nicht gutheißen kann, das er die klammern weggelassen hat ^^

Klasse, ich danke euch dreien!
Habe jetzt einfach mal Franks Lösung genommen, die super funktioniert.
Trotzdem danke allen, jetzt weiß ich es auch fürs nächste Mal :slight_smile:

MfG Icy