Получить результаты включения в строку в PHP? - PullRequest
22 голосов
/ 29 ноября 2009

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

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

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

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

echo $test;

// Hello world.

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

Edit:

Моей первоначальной целью было вытащить из базы данных код 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);
}

Ответы [ 4 ]

56 голосов
/ 29 ноября 2009

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


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

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

8 голосов
/ 29 ноября 2009

test.php

<?php

return 'Hello World';

?>

<?php

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

echo $t;

?>

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

4 голосов
/ 29 ноября 2009

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

<?php
    return 'Hello world.';
?>
0 голосов
/ 29 ноября 2009
$test = file_get_contents('test.php');
echo $test; //Outputs "Hello world.";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...