mf_2
2006-08-13, 15:19:26
Hallo,
Ich will ein Verzeichnis mit einer while-Schleife auslesen. Allerdings will ich verhindern, dass die Verzeichnisse "." und ".." mirbearbeitet werden.
Daher habe ich folgendes Script geschrieben:
if ($handle = opendir($startdir)) {
/* Das ist der korrekte Weg, ein Verzeichnis zu durchlaufen. */
while (($file = readdir($handle)) !== false) {
if($file == ".")
{
break;
}
if($file == "..")
{
break;
}
$filename_array = explode(".",$file);
echo "User: ".$filename_array[0]."<BR>";
}
closedir($handle);
}
Ohne die beiden if-Abfragen hat das Script funktioniert, aber eben auch die "." und ".." Einträge mit abgearbeitet. Wenn ich das Script so wie es oben steht laufen lasse, passiert garnichts.
Ich vermute,dass es daran liegt, dass break; die while-Schleife komplett beendet und nicht nur für den einen $file-Wert. Welches Kommando muss ich statt break; verwenden, dass nur die "." und ".." Werte nicht in der Schleife verarbeitet werden? Gibt es da etwas?
Oder bleibt mir nur folgende Lösung, die mir wenig elegant erscheint ( alles in eine riesige if-Schleife packen ):
if ($handle = opendir($startdir)) {
/* Das ist der korrekte Weg, ein Verzeichnis zu durchlaufen. */
while (($file = readdir($handle)) !== false) {
if(($file!=".")&&($file!=".."))
{
$filename_array = explode(".",$file);
echo "User: ".$filename_array[0]."<BR>";
}
}
closedir($handle);
}
Ich will ein Verzeichnis mit einer while-Schleife auslesen. Allerdings will ich verhindern, dass die Verzeichnisse "." und ".." mirbearbeitet werden.
Daher habe ich folgendes Script geschrieben:
if ($handle = opendir($startdir)) {
/* Das ist der korrekte Weg, ein Verzeichnis zu durchlaufen. */
while (($file = readdir($handle)) !== false) {
if($file == ".")
{
break;
}
if($file == "..")
{
break;
}
$filename_array = explode(".",$file);
echo "User: ".$filename_array[0]."<BR>";
}
closedir($handle);
}
Ohne die beiden if-Abfragen hat das Script funktioniert, aber eben auch die "." und ".." Einträge mit abgearbeitet. Wenn ich das Script so wie es oben steht laufen lasse, passiert garnichts.
Ich vermute,dass es daran liegt, dass break; die while-Schleife komplett beendet und nicht nur für den einen $file-Wert. Welches Kommando muss ich statt break; verwenden, dass nur die "." und ".." Werte nicht in der Schleife verarbeitet werden? Gibt es da etwas?
Oder bleibt mir nur folgende Lösung, die mir wenig elegant erscheint ( alles in eine riesige if-Schleife packen ):
if ($handle = opendir($startdir)) {
/* Das ist der korrekte Weg, ein Verzeichnis zu durchlaufen. */
while (($file = readdir($handle)) !== false) {
if(($file!=".")&&($file!=".."))
{
$filename_array = explode(".",$file);
echo "User: ".$filename_array[0]."<BR>";
}
}
closedir($handle);
}