PHP file_get_contents с php нетронутыми?

В отличие от использования include, который выполняет включенный 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 раз на странице (скажем, это список блогов), кажется, что он не работает, и для каждого из них он включен.

Я ошибаюсь? Есть ли способ сделать это?

Solutions Collecting From Web of "PHP file_get_contents с php нетронутыми?"

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

 function getTemplate($file) { ob_start(); // start output buffer include $file; $template = ob_get_contents(); // get contents of buffer ob_end_clean(); return $template; } 

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

Используя $content = file_get_contents('/path/to/your/file.php'); все теги PHP будут сохранены, вы можете затем eval() или tokenize их, чтобы делать все, что захотите.

Выполнение включения в цикл не является таким глупым .

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

Будь проще !

== EDIT ==

Или, может быть, вы могли бы улучшить ответ 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')); 

(Не так просто больше ^^)

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

Несмотря на то, что он часто считается злым, вы можете попробовать использовать eval () вместе с get_file_contents()

Если вы разрабатываете в 5.3, это намного проще, но даже в 5.2 вы можете использовать так называемую анонимную функцию.

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

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

5.2: create_function