PHP захват печати / требуется вывод в переменной

Можно ли добавить вывод print () в переменную?

У меня есть следующая ситуация:

У меня есть php-файл, который выглядит примерно так:

title.php

<?php $content = '<h1>Page heading</h1>'; print($content); 

У меня есть php-файл, который выглядит так:

page.php

 <?php $content = '<div id="top"></div>'; $content.= $this->renderHtml('title.php'); print($content); 

У меня есть функция renderHtml() :

 public function renderHtml($name) { $path = SITE_PATH . '/application/views/' . $name; if (file_exists($path) == false) { throw new Exception('View not found in '. $path); return false; } require($path); } 

Когда я выгружаю переменную содержимого в page.php, она не содержит содержимого title.php. Содержимое title.php просто печатается, когда оно вызывается вместо добавления в переменную.

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

Спасибо за вашу помощь!

PS

Я обнаружил, что у меня уже был такой вопрос, как мой. Но это касалось Zend FW.

Как захватить вывод представления Zend вместо фактического вывода его

Однако я думаю, что это именно то, что я хочу сделать.

Как настроить функцию так, чтобы она вела себя так?

РЕДАКТИРОВАТЬ

Просто хотел поделиться окончательным решением:

 public function renderHtml($name) { $path = SITE_PATH . '/application/views/' . $name; if (file_exists($path) == false) { throw new Exception('View not found in '. $path); return false; } ob_start(); require($path); $output = ob_get_clean(); return $output; } 

Вы можете записывать выходные данные с помощью функций ob_get_clean() и ob_get_clean() :

 ob_start(); print("abc"); $output = ob_get_clean(); // $output contains everything outputed between ob_start() and ob_get_clean() 

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

a.php:

 return "<html>"; 

b.php:

 $html = include "a.php"; // $html will contain "<html>" 

Вы можете использовать буферизацию вывода для захвата любого выходного сообщения ob_start () http://us3.php.net/ob_start . Вы записываете вывод с помощью ob_get_flush () http://us3.php.net/manual/en/function.ob-get-flush.php .

Или вы можете просто вернуть результат из title.php следующим образом:

 <?php $content = '<h1>Page heading</h1>'; return $content;