Php ob_get_contents () возвращает пустую строку, если включаемый файл во время буферизации не мал - PullRequest
1 голос
/ 27 ноября 2011

Допустим, у меня есть файл, состоящий из 5 строк текста, и каждая строка имеет 50 символов. Содержимое выходного буфера возвращается правильно, но если у меня есть файл, содержащий 100 строк текста, выходной буфер возвращает пустую строку (строку со значением null).

Я делаю это так:

ob_start();
include "file.php"
$string = ob_get_contents();
ob_end_clean();

OR

$string = $this->load->view('view', $data, true);

Я делаю это внутри codeigniter, если это что-то меняет.

Я попытался загрузить файл с помощью функции load-> view средства воспламенения кода с третьим параметром, установленным в true, результат тот же. Попытался также дать ob_start () большое число -> ob_start (9999999); тот же результат;

Ответы [ 3 ]

1 голос
/ 27 ноября 2011

Я бы предложил использовать ob_get_flush , чтобы гарантировать, что ничего не сохраняется в каком-то внутреннем буфере.

Весьма маловероятно, но что вместо этогопечати вашего кода?

require_once( "file.php" );

Просто чтобы убедиться, что материал в file.php не окружен <?php /** **/ php?>.

А что означает

echo ob_get_level();

вывод перед вашим кодом?Не должно быть актуально, если другая буферизация выходных данных уже включена, но ...

0 голосов
/ 03 сентября 2014

вам нужно просто добавить несколько строк в index.php (корень CodeIgniter)

ob_start();

/ * * ------------------------------------------------- -------------- * ПРИМЕНЕНИЕ ОКРУЖАЮЩЕЙ СРЕДЫ * ------------ +

require_once BASEPATH.'core/CodeIgniter.php';

$data = ob_get_contents();
ob_clean();
echo $data; /// or anything else

вот и все!

0 голосов
/ 27 ноября 2011

Почему вы используете функции ob для получения содержимого файла?Почему не file_get_contents?

...