1

ディレクトリの読み方と、そのディレクトリ内のファイルとディレクトリを見つける方法を教えてください。

is_dir()次の関数を使ってディレクトリをチェックしてみました

$main = "path to the directory";//Directory which is having some files and one directory
readDir($main);

function readDir($main) {
    $dirHandle = opendir($main);
    while ($file = readdir($dirHandle)) {
        if ($file != "." && $file != "..") {
            if (is_dir($file)) {
                 //nothing is coming here
            }
        }
    }
}

しかし、それはディレクトリをチェックしていません。

ありがとう

4

6 に答える 6

1

サブディレクトリへのフルパスを使用する必要があります。

if(is_dir($main.'/'.$file)) { ... }
于 2012-09-12T09:32:53.407 に答える
1

PHP 5で最も簡単な方法は、RecursiveDirectoryIteratorandを使用することRecursiveIteratorIteratorです。

$dir = '/path/to/dir';
$directoryIterator = new RecursiveDirectoryIterator($dir);

$iterator = new RecursiveIteratorIterator($directoryIterator, RecursiveIteratorIterator::CHILD_FIRST);

foreach ($iterator as $path) {
  if ($path->isDir()) {
     // ...
  }
}

これらの優れたイテレータは自分で処理するため、自分で再帰する必要はありません。

これらの強力なイテレータの詳細については、リンクされたドキュメントの記事を参照してください。

于 2012-09-12T09:35:32.923 に答える
0

scandirを使用し てから、結果を解析し、「。」を削除します。および「..」およびis_file()

于 2012-09-12T09:28:15.487 に答える
0
$le_map_to_search = $main;
$data_to_use_maps[] = array();
$data_to_use_maps = read_dir($le_map_to_search, 'dir');
$aantal_mappen = count($data_to_use_maps);
$counter_mappen = 1;
while($counter_mappen < $aantal_mappen){
   echo $data_to_use_maps[$counter_mappen];
   $counter_mappen++;
}

$data_to_use_files[] = array();
$data_to_use_files = read_dir($le_map_to_search, 'files');
$aantal_bestanden = count($data_to_use_files);
$counter_files = 1;
while($counter_files < $aantal_files){
   echo $data_to_use_files [$counter_files ];
   $counter_files ++;
}
于 2012-09-12T09:31:45.250 に答える
0

ここのリファレンスを見てください:

http://php.net/manual/en/function.scandir.php

于 2012-09-12T09:33:20.643 に答える
0

これを試して
$handle = opendir($directory); //Open the directory
while (false !== ($file = readdir($handle))) {
$filepath = $directory.DS.$file; //Get all files/directories in the directory
}

于 2012-09-12T09:46:17.373 に答える