0

我的最终目标是仅从目录(其中包含目录)中获取 jpg|png 文件。我首先从这篇文章开始:List Files and Directories 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

1

好吧,你问了很多,我不明白为什么阅读能力对你来说是一个如此突出的问题。如果目录不可读,RecursiveDirectoryIterator则无法进入。在这种情况下,它会抛出异常。

要处理它,您需要在“catch 开发人员反馈RecursiveIteratorIterator)中设置一个标志,以便您可能需要指定它:getChildren()

所以这可能是您正在寻找的一种方式。希望只有一个指针指向正确的方向(我稍后可能会扩展它)。

于 2013-08-31T14:15:39.423 回答