在PHP中整理HTML5输出缩进

在PHP中整理HTML5输出缩进,php,html,indentation,Php,Html,Indentation,我的web应用程序生成HTML5输出,作为可变数量视图的串联。最终的结果是一堆缩进: </div> </div> <div id="content"> <div id="question-header"> <h1> 我想缩进代码,以模糊各个视图的原点,并使输出更易于遵循 我已经调查过了,但是我所有试图使它与HTML5一起工作的尝试都产生了不正确的缩进 如果您想隐藏

我的web应用程序生成HTML5输出,作为可变数量视图的串联。最终的结果是一堆缩进:

            </div>
        </div>

        <div id="content">

<div id="question-header">
    <h1>

我想缩进代码,以模糊各个视图的原点,并使输出更易于遵循


我已经调查过了,但是我所有试图使它与HTML5一起工作的尝试都产生了不正确的缩进

如果您想隐藏单个视图的来源,我建议您缩小HTML。这将增加减少文档大小的好处


为了使HTML输出更容易理解,浏览器附带了调试实用程序,可以以缩进格式解析和呈现DOM树,例如。

最接近您在PHP领域所寻找的是Dindent。Dindent是一个HTML美化器,它使用正则表达式缩进标记。这与Tidy不同,Tidy充当DOM解析器

从文件中:

有一个很好的理由不使用正则表达式来解析HTML。 但是,DOM解析器将重建整个HTML文档。它会增加 缺少标记、关闭打开的块标记或删除任何非 有效的HTML。这就是Tidy、DOM等所做的。这种行为是 调试HTML输出时不需要。基于正则表达式的解析器不会 重新生成文档。Dindent将只添加缩进,而不添加缩进 否则会影响标记


Dindent的唯一目的是缩进HTML标记。它允许配置哪些元素作为内联元素处理,哪些元素作为块处理。

为什么要隐藏视图的原点?(只是好奇!)我唯一的建议是在最终渲染/后过滤阶段执行Tidy;我想随着时间的推移,HTML5会不断更新……现在这对于PHP中的WebMVC框架来说是不典型的,但是视图很可能仍然是一个对象结构。构建DOM树而不是HTML字符串程序集是可行的,但我不知道有任何PHP框架真正做到了这一点,而且这对于实现这一目的来说是一个过分的解决方案。@mario:的确如此@马特·吉布森:就像我说的,这并不重要,但是如果我能正确地进行输出缩进,为什么不呢?如果你用它创建一个domdocument,你可以这样做,但是php标记会产生+1问题,仔细想想,如果没有真正的替代方案,我可能会转向这个解决方案。我采用了这种方法,我遇到的唯一值得注意的问题是HTML元素中的空白消除,如