Всем доборое время суток!
Вопрос вроде бы простой но не могу решить уже сутки.
Вывод обрабатывается колбэк функцией примерно так:
PHP код:
<?php
function callback($buffer)
{
// replace all the apples with oranges
return (str_replace("apples", "oranges", $buffer));
}
ob_start("callback");
?>
<html>
<body>
<p>It's like comparing apples to oranges.</p>
</body>
</html>
<?php
ob_end_flush();
?>
функция намного сложнее но все работает отлично
теперь представим что нам надо внутри callback() сделать inсlude другого файла.
если просто пишем inсlude('myfile.php'); то ясный пень ничего не выводится потому что выводится return от функции callback.
пробуем перехватить вывод еще одним ob_start()
PHP код:
function callback($buffer)
{
ob_start();
include('myfile.php');
$file_content = ob_get_contents();
ob_end_clean ();
return $file_content . str_replace("apples", "oranges", $buffer);
}
пхп ругается что ob_start внутри калбэка нельзя.
и правда нельзя цитата
http://www.php.net/manual/ru/function.ob-start.php
Цитата:
===
ob_end_clean(), ob_end_flush(), ob_clean(), ob_flush() и ob_start() не могут вызываться из callback-функций, так как их поведение непредсказуемо. Если вы хотите удалить содержимое буфера, то верните "" (пустую строку) из callback-функции. Вы так же не можете вызывать функции print_r($expression, true) или highlight_file($filename, true) из callback-функций буферизации вывода.
===
|
myfile.php надо именно инклайдить причем он сам потом дергает кучу всего и инклайдит другие файлы в том числе (
любые идеи будут очень и очень кстати )