如何在 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 以进行缩小?的主要内容,如果未能解决你的问题,请参考以下文章