php ob_start()修复以前输出的标签

时间:2012-02-02 06:53:54

标签: php output-buffering

我刚刚开始玩输出缓冲,似乎遇到了障碍。我的网站使用模板系统加载html页眉/页脚和正确的内容模板。问题是在第一个加载的模板中设置了html标头。因此,当(if)加载另一个包含标题的模板(存储在字符串$ headers中)时,它不会将它们添加到标题中。我已经创建了一个真正草率的方法,我正在寻找更好地处理这个问题的建议。

的index.php

    ob_start('ob_html_headers');

回调函数

    function ob_html_headers($buffer)
    {
        global $headers;

        return str_replace('</head>', $headers.'</head>', $buffer);
    }

感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

嗯,有趣的问题。如果你正在尝试做我认为你的事情,你可能最好建立每个部分发送的数据,然后回声就结束了。如果您不想将所有ob_start转换为$ str。=,那么您可以嵌套echo

基本上你似乎想要做的是允许以后的信息影响早期的输出,最好的方法是构建一个结构(不要担心一些字符串数组就足够了)代表你的页面,然后当你知道一切都需要去的地方时,最后“渲染”它。

答案 1 :(得分:0)

我不明白为什么“标题”存储在模板中。

据我所知,模板中使用的任何动态值都必须在业务逻辑部分中定义(很可能是从数据库中获取的)。

这样你就不会遇到这样的问题。