【发布时间】:2013-03-14 20:07:50
【问题描述】:
我正在使用post 中的以下正则表达式:(?]*)
当我这样做时:
echo gzencode( trim( preg_replace('/(?<=\s)\s+(?![^<>]*<\/pre>)/', '', $html) ), 9);
所有 html 中的空格都被替换了。甚至在 pre 标签内。我需要这个来压缩整个页面。
【问题讨论】:
-
如果你这样做,you're asking for a load of trouble!请改用 HTML 解析器来处理这个问题。但是,当我们谈到这个话题时,为什么要从一开始就删除空白呢? HTML 在绝大多数情况下会忽略它。
-
不要使用正则表达式解析 HTML。您无法使用正则表达式可靠地解析 HTML,并且您将面临悲伤和挫败感。一旦 HTML 与您的期望发生变化,您的代码就会被破坏。有关如何使用已经编写、测试和调试的 PHP 模块正确解析 HTML 的示例,请参阅 htmlparsing.com/php。
-
以上内容不会替换
<pre>和</pre>之间的空格,除非这些标签之间存在<或>。 -
对安迪的评论阿们 - 只需使用工具而不是正则表达式。这些工具旨在不会弄乱您的 HTML。见此链接:nadeausoftware.com/articles/2007/03/…
标签: php regex html-parsing