Php ob_get_contents() возвращает пустую строку, если включаемый файл во время буферизации не мал
Допустим, у меня есть файл, состоящий из 5 строк текста, и каждая строка имеет 50 символов. Содержимое выходного буфера возвращается правильно, но если у меня есть файл, содержащий 100 строк текста, выходной буфер возвращает пустую строку (строка со значением null).
Я делаю это так:
ob_start();
include "file.php"
$string = ob_get_contents();
ob_end_clean();
ИЛИ ЖЕ
$string = $this->load->view('view', $data, true);
Я делаю это внутри codeigniter, если это имеет какое-либо значение.
Я попытался загрузить файл с помощью функции load->view средства воспламенения кода с третьим параметром, установленным в true, результат тот же. Попытался также дать ob_start() большое число -> ob_start(9999999); тот же результат;
3 ответа
Я бы предложил использовать ob_get_flush, чтобы убедиться, что ничего не хранится во внутреннем буфере.
Весьма маловероятно, но что это вместо вашего кода печатать?
require_once( "file.php" );
Просто чтобы убедиться, что материал в file.php
не окружен <?php /** **/ php?>
,
И что
echo ob_get_level();
вывод перед вашим кодом? Не должно быть актуально, если другая буферизация выходных данных уже включена, но...
Вам просто нужно добавить несколько строк в index.php (корень CodeIgniter)
ob_start();
/ * * ----------------------------------------------- ---------------- * ОКРУЖАЮЩАЯ СРЕДА *------------ +
require_once BASEPATH.'core/CodeIgniter.php';
$data = ob_get_contents();
ob_clean();
echo $data; /// or anything else
это все!
Почему вы используете функции ob для получения содержимого файла? Почему не file_get_contents?