Я использую библиотеку 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();