PHP - прочитать количество каталогов, а затем потребовать для каждого указанного имени файла

Я хочу сделать небольшой скрипт, но я довольно n00b в php, поэтому, пожалуйста, помогите мне, если можете :)

Что я хочу, чтобы скрипт делал:

  1. У меня есть "index.php".
  2. Я хочу, чтобы "index.php" читал подкаталоги из известной папки, скажем, "templates/"
  3. Каждый подкаталог будет содержать файл с именем «content.html».
  4. Затем индекс загрузит «content.html» с помощью функции require() для каждого из существующих подкаталогов.

Спасибо большое за помощь!


person Adrian M.    schedule 26.03.2010    source источник


Ответы (2)


RecursiveDirectoryIterator проходит через указанный каталог и все подкаталоги и возвращает всю файловую систему. элементы как объекты SplFileInfo:

$iterator = new RecursiveIteratorIterator(
                new RecursiveDirectoryIterator($yourFilePath));

foreach($iterator as $file) {
    if($file->getFilename() === 'content.html') {
        $file->openFile()->fpassthru();
        // or 
        include $file->getRealpath();
    }
}

Используйте include, если вы хотите запустить файл .html через синтаксический анализатор PHP, например. когда он содержит код PHP, который необходимо оценить. Если нет, используйте fpassthru, потому что это должно быть немного быстрее. Также можно использовать readfile($file->getRealpath()).

person Gordon    schedule 26.03.2010

чего вы хотите достичь?

Вам нужно содержимое различных файлов в вашем index.php или вы хотите сгенерировать ссылку на эти файлы?

Потому что, если вы хотите агрегировать контент, этого подхода недостаточно, потому что вы получаете html-файл с недопустимым синтаксисом, потому что вы просто объединяете содержимое html-файлов.

Чтобы избежать этого, вам потребуется дополнительный анализ содержимого.

Ваше здоровье,

Давид

person Community    schedule 26.03.2010
comment
Каждый подкаталог будет продуктом, поэтому я хочу, чтобы индекс проверял каждый раз, когда он загружается, есть ли что-то новое в этой папке. файл content.html или файл content.php в каждом подкаталоге будет содержать некоторый html-код для текста/изображений (описание этого продукта). Все продукты будут отображаться в столбце на первой странице (index.php). Я знаю, что есть лучшие способы и скрипты для покупок, но это мой способ :) - person Adrian M.; 26.03.2010
comment
Мне просто интересно, является ли content.html полноценным html-файлом, но если он содержит только фрагменты html или php, то объединение даст желаемый результат. - person ; 26.03.2010
comment
только фрагмент (таблица или div) - person Adrian M.; 26.03.2010