需要从每个HTML文件中删除一堆注释

时间:2014-07-12 07:10:39

标签: regex

我正在寻找从互联网档案中恢复我的旧网站,幸好它完好无损。

唯一的问题是,现有的HTML中添加了额外的注释,我想删除它们。评论已添加到每个页面的底部,如下所示,

<!--
 FILE ARCHIVED ON 15:22:46 Jan 15, 2011 AND RETRIEVED FROM THE
 INTERNET ARCHIVE ON 11:36:37 Jul 11, 2014.
 JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE.

 ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C.
 SECTION 108(a)(3)).
-->

我在这里读到,我正在尝试做的事情可以使用正则表达式完成,但是因为我是新手,所以我想要一些帮助。

这是我奋力超过3个小时后所得到的一切,

<!--(\s)*FILE ARCHIVED 

我对如何结束它一无所知。

任何帮助都会很高兴。

5 个答案:

答案 0 :(得分:1)

使用空字符串匹配并替换以下正则表达式:

/<!--.+?-->/s

View a live regex demo.

正则表达式可视化:

vis

答案 1 :(得分:1)

以下正则表达式仅匹配评论部分。然后你可以轻松删除匹配的部分。

/<!--\s*FILE ARCHIVED(?:[^\n]*[\n][^\n]*)*?-->/m

DEMO

使用s(DOTALL)修饰符

/<!--\s*FILE ARCHIVED(?:(?!-->).)*-->/sg

DEMO

答案 2 :(得分:1)

Internet Archive允许我们检索网页的原始版本。例如,如果您有此网址(https://web.archive.org/web/20170204063743/http://john.smith@example.org/),请将时间戳20170204063743替换为20170204063743id_(因此修改后的网址将显示为https://web.archive.org/web/20170204063743id_/http://john.smith@example.org/),然后您将获得原始HTML,而不会添加任何其他评论。互联网档案。

答案 3 :(得分:0)

请尝试这个:

preg_replace("/<!--(.|\s)*?-->/", "", $input_lines);

demo link

它只保留文字&#34; HTML内容到这里&#34;以下内容:

HTML content goes here

<!--
 FILE ARCHIVED ON 15:22:46 Jan 15, 2011 AND RETRIEVED FROM THE
 INTERNET ARCHIVE ON 11:36:37 Jul 11, 2014.
 JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE.

 ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C.
 SECTION 108(a)(3)).
-->

答案 4 :(得分:0)

我选择这样的事情:

<!--(\s)*FILE ARCHIVED(\s|.)*-->

View a live demo