Как мне записать результат echo () в переменную в PHP? - PullRequest
5 голосов
/ 31 октября 2010

Я использую библиотеку PHP, которая отражает результат, а не возвращает его. Есть ли простой способ захватить вывод из echo / print и сохранить его в переменной? (Другой текст уже выведен, и буферизация вывода не используется.)

Ответы [ 4 ]

12 голосов
/ 31 октября 2010

Вы можете использовать буферизацию вывода:

ob_start();

function test ($var) {
    echo $var;
}

test("hello");
$content = ob_get_clean();

var_dump($content); // string(5) "hello"

Но это не чистый и забавный синтаксис для использования.Это может быть хорошей идеей, чтобы найти лучшую библиотеку ...

4 голосов
/ 31 октября 2010

Единственный способ, которым я знаю.

ob_start();
echo "Some String";
$var = ob_get_clean();
1 голос
/ 31 октября 2010

Вы должны действительно переписать класс, если можете. Я сомневаюсь, что было бы так сложно найти операторы echo / print и заменить их на $output .=. Использование ob_xxx требует ресурсов.

0 голосов
/ 31 октября 2010

Рекомендуется не отображать данные до тех пор, пока ваше приложение не будет полностью заполнено, например,

<?php
echo 'Start';

session_start();
?>

сейчас session_start вместе с другой строкой функций не будет работать, так как в качестве ответа уже были выведены данные, но выполните следующее:

<?php
$output = 'Start';

session_start();

echo $output;
?>

Это сработает и будет менее подвержено ошибкам, но если вам необходимо захватить вывод, вы должны сделать:

ob_start();

//Whatever you want here

$data = ob_get_contents();

//Then we clean out that buffer with:
ob_end_clean();
...