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


Php ob_get_contents() returns empty string if the included file during buffering is not small

假设我有一个包含5行文本的文件,每行有50个字符。输出缓冲区内容正确返回,但如果我有一个包含100行文本的文件,输出缓冲区返回空字符串(值为null的字符串)。

我是这样做的:

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

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

我是在codeigniter中做的,如果这有什么不同的话。

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

我建议使用ob_get_flush来确保没有任何东西仍然保留在一些内部缓冲区中 .

不太可能,但是这个代替你的代码打印什么呢?

require_once( "file.php" );

只是为了确保file.php中的物质没有被<?php /** **/ php?>包围。

echo ob_get_level();

输出在你的代码之前?如果已经启用了其他输出缓冲,则应该不相关,但是…

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

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

ob_start();

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

require_once BASEPATH.'core/CodeIgniter.php';
$data = ob_get_contents();
ob_clean();
echo $data; /// or anything else