我最近刚开始玩输出缓冲,似乎遇到了障碍。我的网站使用了一个加载html页眉/页脚和正确内容模板的模板系统。问题是html标题是在加载的第一个模板中设置的。因此,当(如果)加载另一个包含标头(存储在字符串$headers中)的模板时,它不会将它们添加到标头中。我创造了一种非常草率的方式来做这件事,我正在寻找更好地处理这件事的建议。
index.php
ob_start('ob_html_headers');
回调函数
function ob_html_headers($buffer)
{
global $headers;
return str_replace('</head>', $headers.'</head>', $buffer);
}
感谢您的帮助。
嗯,有趣的问题。如果你想做我认为你是什么样的人,你可能最好建立每个部分要发送的数据,然后回声就结束了。如果不想将所有echo
转换为$str=,则可以嵌套ob_start
还没有。
基本上,您似乎想做的是允许稍后的信息影响早期的输出,最好的方法是构建一个表示页面的结构(不要担心,几个字符串数组就足够了),然后在知道所有东西都需要去哪里时在最后"渲染"它。
我不明白为什么在模板中存储"headers"。
据我所知,模板中使用的任何动态值都必须在业务逻辑部分中定义(并且很可能取自数据库)。
这样你就不会遇到这样的问题。