0

私の最終目標は、ディレクトリ(ディレクトリが含まれている)内からjpg | pngファイルのみを取得することです。私は最初にこの記事「List Files and Directoryies with PHP」(2012 年 10 月、Aurelio De Rosa 著)から始めて、OOP アプローチに落ち着きました (これが最善の方法であると思われるため)。

もちろん、これにはいくつかの複雑さが伴いますが、これまでのところ良い例は見つかりませんでした。次の例 ( RecursiveDirectoryIteratorDocsから) は、その方法の一部を取得しているようですが、すべての要件 (例の下) に一致する良い方法は見つかりませんでした:

$ritit = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory, FilesystemIterator::SKIP_DOTS), RecursiveIteratorIterator::CHILD_FIRST );
$r = array();
foreach ($ritit as $splFileInfo) {
   $path = $splFileInfo->isDir()
         ? array($splFileInfo->getFilename() => array())
         : array($splFileInfo->getFilename());

   for ($depth = $ritit->getDepth() - 1; $depth >= 0; $depth--) {
       $path = array($ritit->getSubIterator($depth)->current()->getFilename() => $path);
   }
   $r = array_merge_recursive($r, $path);
}

print_r($r);

私がやりたいことは次のとおりです。

  1. を指定します$directory(たとえば/media/galleries)
  2. 最初にディレクトリのみを調べます (したがって、その最上位ディレクトリにファイルがある場合、それらは無視されます)。
  3. 各ディレクトリが読み取り可能かどうかを確認します (デフォルトで既に実行されている可能性があります)。
  4. jpg|pngこれらのファイル内の各ファイルをリストします(繰り返しますが、それぞれが読み取り可能であることを確認してください。これはデフォルトで可能であると私は信じています)
  5. の任意/すべてのドットファイルを無視するようですが、トップレベルでFilesystemIterator恐ろしいファイルを取得しています).DS_Store
  6. これらを多次元配列として保存します

前述の例はほぼそこにあるようですが、私を正しい方向に導くための助けをいただければ幸いです。

4

1 に答える 1