Вопрос № 19753: Уважаемые Эксперты!
Прочитал у Котерова про функцию ob_start()
Пытаюсь применить ее, пишу простейший код:
ob_start();
echo "1";
- echo все равно выводит в броузер.
В чем дело?
...
Вопрос № 19753
Уважаемые Эксперты!
Прочитал у Котерова про функцию ob_start()
Пытаюсь применить ее, пишу простейший код:
ob_start();
echo "1";
- echo все равно выводит в броузер.
В чем дело?
Отправлен: 15.04.2005, 10:27
Вопрос задал: chiefff (статус: Посетитель)
Всего ответов отправлено: 4
Отвечает: Смирных Сергей Владимирович
Здравствуйте, chiefff!
echo всегда будет выводить в броузер!
Ответ отправил: Смирных Сергей Владимирович (статус: 2-ой класс)
Отправлен: 15.04.2005, 10:33 Оценка за ответ: 2 Комментарий оценки: Нет, не всегда, коллега. Цитирую Котерова: "Вызов данной функции говорит PHP, что необходимо начать "перехват" стандартного выходного потока. Иными словами, весь текст, который выводится операторами echo... будет накапливаться в специальном буфере, а не отправится в броузер"...
Отвечает: Евгений Неверов
Здравствуйте, chiefff!
Верно. ob_start() только начинает слежение за буфером вывода. Чтобы очистить буфер: ob_end_clean(); Чтобы считать всё, что было выведено: ob_get_contents(); Подробности можно узнать на php.net
Ответ отправил: Евгений Неверов (статус: 4-ый класс)
Отправлен: 15.04.2005, 14:07 Оценка за ответ: 3 Комментарий оценки: Про очистку буфера - это понятно. Перечисленные Вами функции работают с содержимым буфера - но для этого сначала нужно перенаправить выходной поток в этот самый буфер. А этого не происходит. Вот я и хотел бы понять: почему?
Отвечает: Strory
Здравствуйте, chiefff!
Дело в том, что эта функция не запрещает вывод, а буферизует его. После echo закончился скрипт и весь вывод идёт из буфера в броузер.
--
С уважением,
Strory.
Ответ отправил: Strory (статус: Практикант)
Отправлен: 17.04.2005, 06:26 Оценка за ответ: 5 Комментарий оценки: Спасибо! Я уж и сам разобрался, все работает.
Отвечает: boom
Здравствуйте, chiefff!
:) интересно ... папробовал, да, действительно выводит.
скорей всего если вклучена буферизация буфера ob_start(); и буфер по окончании скрипта не выводит программист методами ob_get_contents() или ob_end_flush(). и не удаляет его (буфер) функцией ob_end_clean(), то он выводится в броузер.
Пользуйтесь конструкцией:
ob_start();
echo "1";
$output = ob_get_contents();
ob_end_clean();
echo $output;
и все будет у вас в порядке :)
Ответ отправил: boom (статус: 1-ый класс)
Отправлен: 18.04.2005, 10:38