Entwickler-Ecke

Programmiersprachen (Server) - Gibt es ein unbekanntes Unterverzeichnis?


Gerhard_S - Mi 14.07.10 00:57
Titel: Gibt es ein unbekanntes Unterverzeichnis?
Hallo,
wie finde ich mit php heraus, ob ein Verzeichnis ein Unterverzeichnis hat? Der Name des Unterverzeichnisses ist unbekannt.
Ich habe es versucht mit

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
<?php
error_reporting(E_ALL);
$filename = '.';
if (file_exists($filename)) {
    echo "The file $filename exists";
} else {
    echo "The file $filename does not exist";
}
?>

aber das liefert mir immer ein positives Ergebnis, auch wenn gar kein Unterverzeichnis existiert.
Was nun?


Moderiert von user profile iconChristian S.: Topic aus Delphi4PHP-Technologien verschoben am So 15.07.2012 um 13:17


BenBE - Mi 14.07.10 01:44

scan_dir und is_dir ... HTH.


Flamefire - Mi 14.07.10 11:55

BTW: "." ist der alias für das aktuelle verzeichnis. Das existiert logischerweise immer.


Gerhard_S - Mi 14.07.10 13:32

Den langen Weg habe ich durch mehrstündiges Herumprobieren selbst herausgefunden:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
<?php
$dir = dirname(__FILE__);
$files1 = scandir($dir.'../');
$count="0";
   for($i=0; $i < count($files1); $i++) {
      if ((is_dir($files1[$i])) and ($files1[$i] != '.') and ($files1[$i] != '..'))
       {
         echo "UVZ namens: ".$files1[$i]." gefunden.";
         $count=$count+1;
        }
   }
echo "Es gibt ".$count." Unterverzeichnisse.";
?>

Vielleicht kennt jemand doch eine Funktion, die das ganze auf ein oder zwei Zeilen Code reduziert?


BenBE - Mi 14.07.10 14:38


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
<?php
$dir = dirname(__FILE__);
$files = scandir($dir.'../');

$dirs = array();
array_walk($files, function($v, $k, $u) {
    if(is_dir($u.$v) && !in_array($v, array('.''..'))) {
        $dirs[] = $v;
    }
}, $dir);
$count=count($dirs);

echo "Es gibt ".$count." Unterverzeichnisse.";
?>


Heiko - Do 15.07.10 21:43

Oder verständlicher:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
<?php
$dir = dirname(__FILE__);
$files = scandir($dir.'../');

$dirs = array();
foreach ($files as $file) {
  if (is_dir($file) && !in_array($file, array('.''..'))){
    $dirs[] = $file
  }
}

echo "Es gibt ".count($dirs)." Unterverzeichnisse.";
?>


PS: liefert dirname nicht eigehntlich einen Ordner ohne "/" am Ende zurück?