【问题标题】:PHP output buffer - How to access a specific level?PHP 输出缓冲区 - 如何访问特定级别?
【发布时间】:2018-02-07 10:47:08
【问题描述】:

当我这样做时:

print_r(ob_list_handlers());

我明白了:

Array ( [0] => default output handler [1] => W3TC\Generic_Plugin::ob_callback [2] => Weglot::treatPage )

似乎每次调用 ob_start() 时,它都会在 ob 堆栈中创建一个新级别或新索引或其他内容。

如何访问特定关卡的内容,而不仅仅是默认关卡?

【问题讨论】:

  • 我只是想让这个问题更清楚一点

标签: php output buffer


【解决方案1】:

是的,您对每个 ob_start() 都完全正确,您正在向堆栈添加一个级别,但是如果您想累积输出并且稍后您想使用该输出,我建议使用数组将输出放入。在每个ob_start() 的末尾,您需要使用ob_end_...() 关闭缓冲区,或者您向缓冲区添加级别,或者每次都打开和关闭缓冲区,所以

$output = array();

ob_start();
echo("<h1>hello</h1>"); 
array_push($output, ob_get_contents());
ob_end_clean();

ob_start();
echo("<h3> world</h3>"); 
array_push($output, ob_get_contents());
ob_end_clean();

echo $output[0]." ".$output[1];

$output = array();

ob_start();
echo("<h1>hello</h1>"); 
array_push($output, ob_get_contents());

ob_start();
echo("<h3> world</h3>"); 
array_push($output, ob_get_contents());

ob_end_clean();
ob_end_clean();

echo $output[0]." ".$output[1];

没有任何区别。我希望这会有所帮助

【讨论】:

  • 您好,谢谢您的回复 - 现在更清楚了,我会看看您的解决方案是否可以应用于我的问题谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-24
  • 2014-10-01
  • 1970-01-01
  • 2011-11-24
  • 1970-01-01
  • 2012-02-26
  • 1970-01-01
相关资源
最近更新 更多