正则 剔除HTML注释块

hzbigdog 2009-08-25 03:22:12
我想剔除文本中的 <!-- -->注释块中的所有代码,但是多行注释的搞不掉,能否帮我看看怎么才能搞掉?
<?php
$sTmp = '
<!--scroll
menu-->
<SCRIPT language=javascript>
<!--scroll menu-->
<!--
if (isNS4) {
}
//-->
</SCRIPT>
';
$aRules = '/<!--(?:.(?<!<--))*.*-->$/m';
print_r(preg_replace($aRules, '', $sTmp));
?>
...全文
180 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
纠结的程序猿 2009-08-26
  • 打赏
  • 举报
回复
下载PilotEdit 2.8, http://topic.csdn.net/u/20090818/22/df665ee5-bd6f-4c6d-84b6-9831217e4e02.html

用下面的正则表达式查找替换(PilotEdit的正则支持多行):
查找:<!--[]*-->
替换为:


假设原始文件为:
<?php
$sTmp = '
<!--scroll
menu-->
<SCRIPT language=javascript>
<!--scroll menu-->
<!--
if (isNS4) {
}
//-->
</SCRIPT>
';
$aRules = '/<!--(?:.(?<!<--))*.*-->$/m';
print_r(preg_replace($aRules, '', $sTmp));
?>



将被转换为:
<?php
$sTmp = '

<SCRIPT language=javascript>


</SCRIPT>
';
$aRules = '/$/m';
print_r(preg_replace($aRules, '', $sTmp));
?>
Bevin_chen 2009-08-25
  • 打赏
  • 举报
回复
5楼厉害, 刚我还郁闷 点的问题呢.
coddz 2009-08-25
  • 打赏
  • 举报
回复
即便可以写出正则表达式,也比较复杂。
foolbirdflyfirst 2009-08-25
  • 打赏
  • 举报
回复
s (PCRE_DOTALL)
如果设定了此修正符,模式中的圆点元字符(.)匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。这和 Perl 的 /s 修正符是等效的。排除字符类例如 [^a] 总是匹配换行符的,无论是否设定了此修正符。
====================================
$sTmp = '
<!--scroll

menu-->
<SCRIPT language=javascript>
<!--scroll menu-->
<!--
if (isNS4) {
}
//-->
</SCRIPT>
';
$aRules = '/<!--(.*?)-->/is';
print_r(preg_replace($aRules, '', $sTmp));
tfxg 2009-08-25
  • 打赏
  • 举报
回复
主要是分行,估計簡單的正則解決不了
Bevin_chen 2009-08-25
  • 打赏
  • 举报
回复
$aRules = "/<!--[a-z0-9 \r\n\(\){}\/]+-->/i";
hzbigdog 2009-08-25
  • 打赏
  • 举报
回复
不行啊,分行的剔除不了,单行<!--scroll menu-->可以剔除,其他两个代码块都剔除不了。试过了下面的代码

$aRules = '/<!--.+?-->/m';

剔除后是这个结果。
			  <!--scroll 
menu-->
<SCRIPT language=javascript>

<!--
if (isNS4) {
}
//-->
</SCRIPT>
Bevin_chen 2009-08-25
  • 打赏
  • 举报
回复
$aRules = "/<!--.+?-->/";

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧