使用PHP在包含子文件夹的任何特定文件夹中查找文件

时间:2010-11-18 07:52:12

标签: php file directory

我坚持以下,所以任何帮助将不胜感激。

我有一个如下文件夹树:

images/collections/

在collections文件夹中可能有许多子文件夹

images/collections/collection1, images/collections/collection2

图像命名为

imageProductCode-something.jpg

我要做的是将一个作为我的产品代码的变量传递给一个脚本,然后在任何文件夹中找到该文件并返回其路径......

images/collections/collection3/imageProductCode-something.jpg

3 个答案:

答案 0 :(得分:0)

您可以查看所有收藏品:

$collections = array('collection1', 'collection2', 'collection3');

foreach ($collections as $collection) {
  if (file_exists('/path/to/collections/'.$collection.'/'.$productCode.'.jpg')) {
    ... do your thing ...
    break;
  }
}

根据目录的大小,创建数据库(flatfile或MySQL)以查找特定产品代码的图像位置可能会更快。

答案 1 :(得分:0)

您可以使用RecursiveDirectoryIterator

function getImageDirectory($iId) {
    $oDirectory = new RecursiveDirectoryIterator("/path/to/images/");
    $oIterator = new RecursiveIteratorIterator($oDirectory);
    foreach($oIterator as $oFile) {
        if ($oFile->getFilename() == 'imageProductCode-' . $iId . '.jpg') {
            return $oFile->getPath();
        }
    }
}

答案 2 :(得分:0)

如果您使用的是< 5.3,您可能需要自己编写递归。 您想要遵循的主要方法:

  1. 执行opendir
  2. READDIR
  3. is_dir
  4. is_file
  5. 从图片的根目录开始,检查每个条目。如果是目录,请检查目录。 看起来很多工作,所以如果您正在查看大型目录和图像集合,您可能需要查看unix命令或db链接,如上所述。

    另一种方法是将目录逻辑地连接到图像,以便您可以从图像的名称(或其他属性)中查看要查找的目录。

    祝你好运,

    伊沙伊