Получить результаты включения в строку в PHP?


Допустим, файл test.php выглядит примерно так:

<?php
echo 'Hello world.';
?>

Я хочу сделать что-то вроде этого:

$test = include('test.php');

echo $test;

// Hello world.

Может ли кто-нибудь указать мне правильный путь?

Редактировать:

Моей первоначальной целью было извлечь PHP-код, смешанный с HTML, из базы данных и обработать его. Вот что я в итоге сделал:

// Go through all of the code, execute it, and incorporate the results into the content
while(preg_match('/<\?php(.*?)\?>/ims', $content->content, $phpCodeMatches) != 0) {
    // Start an output buffer and capture the results of the PHP code
    ob_start();
    eval($phpCodeMatches[1]);
    $output = ob_get_clean();

    // Incorporate the results into the content
    $content->content = str_replace($phpCodeMatches[0], $output, $content->content);
}
 20
Author: Kirk Ouimet, 2009-11-29

4 answers

Использование буферизации вывода является лучшим выбором.


ob_start();
include 'test.php';
$output = ob_get_clean();

PS: Помните, что при необходимости вы также можете вложить выходные буферы в содержимое вашего сердца.

 55
Author: Slashterix, 2014-06-13 10:56:07

Test.php

<?php

return 'Hello World';

?>

<?php

$t = include('test.php');

echo $t;

?>

Пока включенный файл содержит инструкцию return, он будет работать.

 7
Author: Galen, 2009-11-29 06:21:09

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

<?php
    return 'Hello world.';
?>
 4
Author: Atli, 2009-11-29 00:19:05
$test = file_get_contents('test.php');
echo $test; //Outputs "Hello world.";
 -4
Author: pnm123, 2009-11-29 05:44:41