【问题标题】:A regex to remove whitespace and line breaks from HTML document从 HTML 文档中删除空格和换行符的正则表达式
【发布时间】:2011-07-11 13:50:56
【问题描述】:

我正在使用这个正则表达式从 HTML 文档中删除空格和换行符。

但是,它似乎不能很好地处理换行符。

preg_replace('/(?:(?<=\>)|(?<=\/\>))(\s+)(?=\<\/?)/', '', $HTML);

我该如何改善上述情况?

我只是想删除 HTML 标记的开头和结尾之间的空格。

【问题讨论】:

  • 你不想用tidy之类的东西吗?
  • 我已经在使用 tidy 但它不会删除空格和换行符。我想删除空格,这样我的 HTML 文档就在一行上。
  • 如果 HTML 文档在 &lt;pre&gt; 标记内有多行怎么办?删除这些特定的换行符会改变文档的呈现方式,而不是变得更好。

标签: php regex


【解决方案1】:

这个正则表达式怎么样?它并不完美(它只处理行首和行尾的空格)但它对我有用。

$html = preg_replace('/[\t\s\n]*(<.*>)[\t\s\n]*/', '$1', $html);

【讨论】:

  • 我认为您缺少 preg_replace 函数的第二个参数。我尝试了上述方法,它设法删除了很多 HTML 标签?
  • 你需要删除'$1',只需要一个空字符串声明''就可以了
  • 在使用\s 时明确提及\t\n 是没有意义的,因为\s 包含这些字符。 [\t\s\n] 更简单地表示为\s(不需要字符类)。
  • Regex 也完全不知道 HTML 文档中什么是“标签”,什么不是“标签”。换句话说,使用正则表达式会使该过程容易损坏文本节点。 3v4l.org/gqGs0
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-13
  • 2021-04-10
  • 2019-06-21
  • 1970-01-01
  • 1970-01-01
  • 2020-10-27
相关资源
最近更新 更多