如果缓冲期间包含的文件不小,则Php ob_get_contents()返回空字符串

时间:2011-11-26 22:52:00

标签: php codeigniter output-buffering

假设我有一个由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中执行此操作,如果这有任何区别。

我尝试使用Code igniter的load->视图函数加载文件,第三个参数设置为true,结果相同。试图给ob_start()一个大数字 - > ob_start(9999999);同样的结果;

3 个答案:

答案 0 :(得分:1)

我建议使用ob_get_flush来确保在某些内部缓冲区中仍然保留

非常不可能,但这会代替您的代码打印什么?

require_once( "file.php" );

只是为了确保file.php中的内容不被<?php /** **/ php?>包围。

那是什么

echo ob_get_level();

在代码之前输出?如果已启用其他outbut-buffering,则不应该相关,但是......

答案 1 :(得分:0)

你只需要在index.php中添加一些行(CodeIgniter的根目录)

ob_start();

/ *  * ------------------------------------------------- --------------  *应用环境  * ------------ +

require_once BASEPATH.'core/CodeIgniter.php';

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

就是这样!

答案 2 :(得分:-1)

为什么使用ob函数来获取文件的内容?为什么不是file_get_contents?