我已经检查了其他答案但似乎无法执行以下操作。请帮助别人:)
我想删除其中的所有内容,包括特定的HTML注释
HTML:
Some HTML that must stay
<!-- START IF USER_ID -->
some html that must go
<!-- END IF USER_ID -->
Some more HTML that's gotta stay
<!-- START IF USER_ID -->
this also needs to go
<!-- END IF USER_ID -->
因此,<!-- START IF USER_ID -->
和<!-- END IF USER_ID -->
之间的所有内容以及评论本身都需要
我的preg_replace模式(这显然是错误的):
"/<!-- START IF USER_ID -->.*?<!-- END IF USER_ID -->/"
结果应为
Some HTML that must stay
Some more HTML that's gotta stay
感谢您提前检查并获得答案:)
答案 0 :(得分:6)
感谢@mlwacosmos - 使用您提供的链接。
达成:
$startPoint = '<!-- START IF USER_ID -->';
$endPoint = '<!-- END IF USER_ID -->';
$result = preg_replace('#('.preg_quote($startPoint).')(.*)('.preg_quote($endPoint).')#siU', '', $html);
答案 1 :(得分:3)
那个正则表达式很好看。使用m
修饰符使点匹配换行符:
"/<!-- START IF USER_ID -->.*?<!-- END IF USER_ID -->/m"
或者,您可以使用[\s\S]
作为替代:
"/<!-- START IF USER_ID -->[\s\S]*?<!-- END IF USER_ID -->/"