Эта тема на forum.dklab.ru


Advanced Guest: есть ли способ перехватить вывод умирающего скрипта (а так же header("Location
Есть скрипт.
Большой.
Он умирает почти в любом месте. Править все вызовы die практически нереально.
Однако то что скрипт выводит, необходимо перед показом пользователю проверить на содержание, и часть (в случае наличия) вырезать.
В php вроде бы была обнаружена функция которая срабатывает аккурат перед завершением скрипта, но она стартует уже после посылки юзеру страницы.
Можно ли это обойти?

Примерно тот же вопрос по поводу header("Location... хотелось бы умудриться схватить скрипт "за руку" если он посылает такой заголовок.
Maus:
по поводу header
headers_list ()?
Advanced Guest:
сорри, уточняю. в php4
Andrey Gurin:

В php вроде бы была обнаружена функция которая срабатывает аккурат перед завершением скрипта, но она стартует уже после посылки юзеру страницы.
Можно ли это обойти?

Есть функции ob_start и ей подобные, с их помощью можно перехватить поток вывода и обработать его после завершения скрипта, но ДО посылки результата юзеру.
Вот пример

<?
/*
*эта функция будет обрабатывать поток вывода
@param $buffer - собственно, то что скрипт хочет отослать юзеру
*/
function _obHandler($buffer)
{
$buffer .= "Hello, I'm ".__FUNCTION__." and I tell you that ".$_SERVER['SCRIPT_NAME']." is dead... bye bye";
return $buffer;
}

print "Script is running... ";

ob_start('_obHandler');

print "Hello, world! ";
die("Cruel world, I'm dying! ");
print "I can't see this string...";

?>


ну и ссылка на мануал
http://it.php.net/manual/en/function.ob-start.php
-Den-:
Возможно, это будет полезно : http://dklab.ru/lib/PHP_CodeFilter/?
Advanced Guest:
Andrei Gurin, респект. спасибо. то что надо.

Эта тема на forum.dklab.ru