【问题标题】:Remove unwanted line feeds from an HTML file从 HTML 文件中删除不需要的换行符
【发布时间】:2009-09-16 10:55:42
【问题描述】:

我有很多包含不需要的换行符的 HTML 文件。这些破坏了页面内的内联javascript和格式等内容。我想想出一种方法来去除页面中没有直接出现在 html 标记之后的所有换行符,例如 </div>。有谁知道可能能够实现这一目标的正则表达式和/或程序?

【问题讨论】:

标签: php html regex


【解决方案1】:

您可以使用Notepad++ 的搜索/替换功能,使用正则表达式来捕获大部分内容。

类似:

([^>])\n(.+)

替换为:

\1 \2

【讨论】:

  • 根据 html 文件的格式,您可能需要使用 ([^>])\r\n(.+) 或 ([^>])\r(.+) 代替.
【解决方案2】:

您可以使用否定的lookbehind来匹配换行符

<?php

$buffer = file_get_contents('test.html');

// replace all line feeds not preceded by </div>
$buffer = preg_replace('|(?<!</div>)[\r\n]|', "", $buffer);

file_put_contents('test.new.html', $buffer);
?>

见:http://www.regular-expressions.info/lookaround.html

【讨论】:

  • 或者只是在你最喜欢的编辑器中使用 RE: (?)[\r\n]。
  • 您实际上可能想要更像 (?]+>)(\r?\n){2,} 的东西,即任何超过 1 个 CRLF 的结束标记(其中CR 是可选的)
猜你喜欢
  • 2019-10-01
  • 1970-01-01
  • 2016-08-19
  • 2012-10-06
  • 1970-01-01
  • 1970-01-01
  • 2017-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多