ob_end_clean также изменяет переменные

Вот пример кода:

ob_start();
include("test.ini");
$string = ob_get_contents();
echo "<br/>";
echo "string: ".$string;

и вывод:

testing = ini
string: testing = ini

Когда я добавлю

ob_end_clean();

в конце кода выше нет вывода на экран.

Я, по крайней мере, ожидаю, что строка будет отображаться на экране? Почему этого не видно?

3 ответа

Решение

ob_start(); буферизация вывода во внутренний буфер начинается не (screen), затем при добавлении ob_get_contents (); он копирует вывод из внутреннего буфера еще ничего не печатается, а когда ob_end_clean (); интерпретируется, он очистит всю внутреннюю буферную память, ничего не выводится на экран.

Начиная с ob_start(); в ob_end_clean (); ничего не будет напечатано, я использую этот метод, когда включаю файл для предотвращения печати пробелов перед отправкой заголовка.

Я думаю, что вы ищете функцию ob_get_clean().

Смотрите разницу между ob_get_clean (), ob_end_flush () и ob_end_clean ().

ob_get_clean получает текущее содержимое буфера и удаляет текущий выходной буфер.

ob_end_flush удаляет содержимое, но сначала выводит буфер.

ob_end_clean отбрасывает содержимое самого верхнего выходного буфера. Это ничего не вернет.

Другие вопросы по тегам