Как получить результат echo () в переменной на PHP?

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

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

ob_start(); function test ($var) { echo $var; } test("hello"); $content = ob_get_clean(); var_dump($content); // string(5) "hello" 

Но это не чистый и забавный синтаксис. Может быть хорошей идеей найти лучшую библиотеку …

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

 ob_start(); echo "Some String"; $var = ob_get_clean(); 

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

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

 <?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();