私の最終目標は、ディレクトリ(ディレクトリが含まれている)内からjpg | pngファイルのみを取得することです。私は最初にこの記事「List Files and Directoryies with PHP」(2012 年 10 月、Aurelio De Rosa 著)から始めて、OOP アプローチに落ち着きました (これが最善の方法であると思われるため)。
もちろん、これにはいくつかの複雑さが伴いますが、これまでのところ良い例は見つかりませんでした。次の例 ( RecursiveDirectoryIterator
Docsから) は、その方法の一部を取得しているようですが、すべての要件 (例の下) に一致する良い方法は見つかりませんでした:
$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);
私がやりたいことは次のとおりです。
- を指定します
$directory
(たとえば/media/galleries
) - 最初にディレクトリのみを調べます (したがって、その最上位ディレクトリにファイルがある場合、それらは無視されます)。
- 各ディレクトリが読み取り可能かどうかを確認します (デフォルトで既に実行されている可能性があります)。
jpg|png
これらのファイル内の各ファイルをリストします(繰り返しますが、それぞれが読み取り可能であることを確認してください。これはデフォルトで可能であると私は信じています)- の任意/すべてのドットファイルを無視するようですが、トップレベルで
FilesystemIterator
恐ろしいファイルを取得しています).DS_Store
- これらを多次元配列として保存します
前述の例はほぼそこにあるようですが、私を正しい方向に導くための助けをいただければ幸いです。