在这里需要一些PHP帮助,包含的内容显示为“1”,这意味着它的真实但需要它的内容才能显示,我不确定它为什么不是。这是一个缩短版的函数:
public function content {
$website->content = 'Some content here. ';
ob_start();
include('myfile.php');
$file_content = ob_end_clean();
$website->content .= $file_content;
$website->content .= ' Some more content here.';
echo $website->content;
}
输出:
Some content here 1 Some more content here
当我需要输出时:
Some content here 'Included file content here' Some more content here
我知道如何解决这个问题?
答案 0 :(得分:8)
尝试使用ob_get_clean()
代替ob_end_clean()
。
清除当前缓冲区但ob_end_clean()
返回布尔值,而ob_get_clean()
返回当前缓冲区的内容。
答案 1 :(得分:3)
而不是使用ob_end_clean
将现有代码修改为类似于下面的内容
ob_start();
include('myfile.php');
$file_content = ob_get_contents();
ob_end_clean ();
我没有投票给ob_get_clean
的原因是因为我有时候其他开发人员对实际发生的事情感到困惑,函数名称并没有真正说明输出缓冲将在以后结束这是电话。
我认为该函数将容易出现进一步的错误,因此使用ob_start
/ ob_end_clean
更容易理解,并且更好地用于将来的代码维护。
在一行额外代码之间进行权衡,但更容易理解的代码是值得的。
答案 2 :(得分:2)
您应该使用ob_get_clean()
,而不是ob_end_clean()
。前者返回一个输出缓冲区的字符串并清空它,而后者只是清空并返回一个bool。