如何在 PHP 中解析 HTML 以进行缩小?

Posted

技术标签:

【中文标题】如何在 PHP 中解析 HTML 以进行缩小?【英文标题】:How to parse HTML for minification in PHP? 【发布时间】:2011-03-10 04:41:56 【问题描述】:

我正在寻找一种算法来压缩我用 php 编写的 CMS 的 html 输出,并使用 CodeIgniter 框架编写。

我正在考虑尝试删除任何尖括号之间的空格,<script><pre><style> 元素除外,并且为了简单起见简单地忽略这些元素。我应该澄清一下,这是连续标签之间的空白,它们之间没有文字。

我应该如何解析 HTML 以找到我想要删除的空格?

编辑: 首先,我想删除所有不在<pre> 标签中的制表符。这可以用正则表达式来完成,我敢肯定,但有什么替代方案?

【问题讨论】:

如何处理 CSS 声明为 white-space: pre 的元素? 这不是我真正关心的问题,因为我不知道它的存在,<pre> 标签在严格的文档类型中有效。 perfectionkills.com/optimizing-html 我觉得我的标记很干净:cms.timshomepage.net 【参考方案1】:

不要。空格可以忽略不计。最好使用输出压缩,with zlib 或 here for example

【讨论】:

我已经用压缩输出了,想看看能不能成功缩小HTML。 努力并不能证明节省是合理的,而且它可能会在某些时候导致问题,例如 Gordon 提到的。 我意识到这可能不值得付出努力,但我正在努力迎接挑战。【参考方案2】:

现有的 HTML 缩小方案有问题吗?

Minify 执行 HTML(以及 CSS 和 JS)。

(第二个链接指向源代码,它包含了它所采取的步骤 - 如果您确实想创建自己的,应该是一个很好的帮助 - 它是BSD licensed。)

另外,作为Pete says,通过对 HTML(和 CSS/JS/等)使用 gzip 压缩,您将受益更多,并且不会被 Gordon 提到的问题所困扰在他的评论中。

【讨论】:

我忘记了 Minify 使用 HTML。我已经将它用于 JS 和 CSS 缩小。另外,我很好奇它是否可以在没有这么多正则表达式的情况下完成。我的印象是正则表达式相当低效。 RegEx的问题在于效率较低,而且HTML不是Regular语言,所以不能用regex正确解析。您可以研究 PHP 的 HTML DOM 解析 (php.net/manual/en/book.dom.php) 并考虑编写一些使用该解析的内容,然后再次输出而不使用空格。

以上是关于如何在 PHP 中解析 HTML 以进行缩小?的主要内容,如果未能解决你的问题,请参考以下文章

您如何在 PHP 中解析和处理 HTML/XML?

您如何在 PHP 中解析和处理 HTML/XML?

您如何在 PHP 中解析和处理 HTML/XML?

您如何在 PHP 中解析和处理 HTML/XML?

如何使 HTML 表格中的一列缩小以适应?

如何使用 PHP 缩小 XML?