Найти файл в любой определенной папке с подпапками, используя PHP - PullRequest
1 голос
/ 18 ноября 2010

Я застрял в следующем, поэтому любая помощь будет оценена.

У меня есть дерево папок, как показано ниже:

images/collections/

В папке коллекций могут быть многочисленные подпапки

images/collections/collection1, images/collections/collection2

Изображения названы как

imageProductCode-something.jpg

То, что я пытаюсь сделать, это передать одну переменную, которая является кодом моего продукта, скрипту, который затем находит файл в любой из папок и возвращает его путь ...

images/collections/collection3/imageProductCode-something.jpg

Ответы [ 3 ]

0 голосов
/ 18 ноября 2010

Вы можете использовать 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();
        }
    }
}
0 голосов
/ 18 ноября 2010

Если вы используете версию PHP <5.3, вам может потребоваться написать рекурсию самостоятельно. Основные методы, которыми вы хотели бы следовать: </p>

  1. opendir
  2. READDIR
  3. is_dir
  4. is_file

Начните с корня ваших изображений, проверяйте каждую запись. Если это каталог, проверьте каталог. Это похоже на большую работу, поэтому, если вы просматриваете большие каталоги и коллекции изображений, вам может понадобиться либо команда unix, либо ссылки на базы данных, как предложено выше.

Другим способом было бы логически связать каталоги с изображениями, чтобы можно было по названию (или другому свойству) изображения определить, в каком каталоге искать.

Удачи,

Ишай

0 голосов
/ 18 ноября 2010

Вы можете проверить все свои коллекции:

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

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

В зависимости от размера вашего каталога, может быть быстрее создать базу данных (flatfile или MySQL) для поиска местоположения изображения для определенногокод товара.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...