PHP的preg_replace一切都在特定的HTML注释标记之间(php preg_replace

2019-07-04 23:03发布

我检查了其他的答案,但似乎无法做到以下几点。 请帮助别人:)

我想在两者之间,并包括特定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

感谢您检查和提前的答案:)

Answer 1:

由于@mlwacosmos - 使用你提供的链接。

实现了与:

$startPoint = '<!-- START IF USER_ID -->';
$endPoint = '<!-- END IF USER_ID -->';
$result = preg_replace('#('.preg_quote($startPoint).')(.*)('.preg_quote($endPoint).')#siU', '', $html);


Answer 2:

该正则表达式看起来很好。 使用的m修改,使点匹配换行符:

"/<!-- START IF USER_ID -->.*?<!-- END IF USER_ID -->/m"

另外,您也可以使用[\s\S]作为替代品:

"/<!-- START IF USER_ID -->[\s\S]*?<!-- END IF USER_ID -->/"


文章来源: php preg_replace everything in between specific html comment tags