Undefined offset für If-Anweisung

wal

Erfahrenes Mitglied
Hallo,

ich lese aus einem Verzeichnis nur bestimmte Dateien aus, dies ermöglicht die If-Anweisung:

Code:
...
$file_array = Array();
$handle = opendir('.'); 

while (false !== ($file = readdir($handle))) { 
   $filea = split('[.]', $file);
   if ($file != "." && $file != ".." && $filea[1] != "asp" && $filea[1] != "php" && $filea[1] != "db" && $filea[1] != "") {
      $file_array[] = $file;
   }    
}
closedir($handle); 
...

Wenn ich dieses Script ablaufen lasse und mir das $file_array anzeigen lasse, stehen die richtigen Dateinamen drinnen. Doch leider erhalte ich auch folgende Fehlermeldung, bezogen auf die If - Zeile:

Notice: Undefined offset: 1 in test.php on line 36

Kann mir hierbei jemand helfen? Welchen offset muss ich setzen?

Jede Hilfe ist wie immer herzlich Willkommen

Vielen Dank im Voraus!
 
Liegt an der Zeile:
PHP:
$filea = split('[.]', $file);
du musst nach einem Punk trennen, nicht nach [.].

Allerdings ist das ganze schlechter Stil.
Versuchs mal so:
PHP:
function GetFileExt ( $a_sFileName )
{
    $aFileNameSplit = explode(".", $a_sFileName);
    $sFileExtension = $aFileNameSplit[count($aFileNameSplit)-1];
    return $sFileExtension;
}

$aNotAllowed= array ("asp", "php", "db");

$iDirHandler = opendir(".");
while ($sFileName == readdir($iDirHandler)) {
    if (!is_dir($sFileName) && !in_array(GetFileExt($sFileName), $aNotAllowed)) {
        //Ausgeben, bearbeiten, was auch immer
    }
}
closedir($iDirHandler);

Ungetestet!


//Edit:
Es muss natürlich while ($sFileName = readdir($iDirHandler)) { und nicht while ($sFileName == readdir($iDirHandler)) { heißen :)
 
Zuletzt bearbeitet von einem Moderator:
Hi,

vielen Dank. Hat sehr geholfen und sieht viel besser aus :)

Hat auch fast gleich funktioniert, musst nur noch eine Abbruchbedingung in die While-Schleife einbauen.

Danke!
 
Zurück