PHP file_get_contents с неповрежденным php?

В противоположность использованию включения, которое выполняет включенный php в файле..., это возможный сохранить содержание php файла к переменной - но с php, все еще неповрежденным и исполняемым?

Моя цель смотрит что-то как:

$template = some_imaginary_include_function('myfile.php');
foreach($list_of_blogs as $blog) {
    // somehow get blog content in template and render template;
}

Я знаю, что это - немой пример..., но я надеюсь, что он иллюстрирует общее представление. Если я должен циклично выполниться через шаблон 50 раз на странице (скажите, что это - список блогов), это кажется немым, чтобы на самом деле выполнить и включать для каждого.

Я неправ? Существует ли способ сделать это?

8
задан johnnietheblack 13 January 2010 в 23:13
поделиться

6 ответов

Как насчет этого ...

function getTemplate($file) {

    ob_start(); // start output buffer

    include $file;
    $template = ob_get_contents(); // get contents of buffer
    ob_end_clean();
    return $template;

}

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

20
ответ дан 5 December 2019 в 06:37
поделиться

с помощью $ content = file_get_contents ('/ path / to / four / file.php'); Все теги PHP будут сохранены, вы можете затем Eval () или токена их делать все, что вы хотите.

4
ответ дан 5 December 2019 в 06:37
поделиться

, выполнение включенных в цикл так глупо .

Все переменные, определенные до того, как включают, будут доступны в ваш шаблон.

Держите это просто!

== Редактирование ==

Или, может быть, вы можете улучшить ответ ALEX:

function getTemplate($file, $template_params = array()) {

    ob_start(); // start output buffer
    extract($template_params); // see PHPDoc
    // from here $var1 will be accessible with value "value1"
    // so your template may contain references to $var1

    include $file;
    $template = ob_get_contents(); // get contents of buffer
    ob_end_clean();
    return $template;

}
echo getTemplate('your_template.php', array('var1' => 'value1'));

(не так просто ^^)

1
ответ дан 5 December 2019 в 06:37
поделиться

Запись функция во включенном Сценарии PHP, который возвращает желаемый вывод. Определить константу в основном Сценарии PHP. Во включенном Сценарии PHP проверьте на отсутствие упомянутой константы и повторите возвращаемое значение функции, если это верно.

0
ответ дан 5 December 2019 в 06:37
поделиться

Несмотря на то, что он часто предполагается злым, вы можете попробовать использовать Eval () вместе с Get_File_Contents ()

0
ответ дан 5 December 2019 в 06:37
поделиться

Если вы разрабатываете в 5.3. Это намного проще, но даже на 5,2 вы можете использовать то, что называется анонимной функцией для этого.

Анонимная функция позволит вам пройти код в качестве переменной. Чтобы загрузить этот код из файла, который вам может придеться файл_get_bytes в строку, EVALE, затем введите в переменной, но вы получите точку, которую я надеюсь.

5.3: Анонимные функции

5.2: create_function

0
ответ дан 5 December 2019 в 06:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: