从字符串中删除多行注释


Remove multi-line comment from string

我想在我的视图文件中写一些注释,这些注释在发送到用户浏览器之前被删除。

评论的一个例子是:

### - [[VIEW COMMENTS
# Comments for a view file.
#
### - VIEW COMMENTS END]]

其中静态部分是第1行和第4行,中间的所有部分都是可变的。

我该怎么做?我尝试过preg_replace,但没有成功:

$build = preg_replace("/([### - '['[VIEW COMMENTS])([^'[']+)([### - VIEW COMMENTS END']']])", '', $build);

答案是(由Anirudh提出):

$build = preg_replace('/(?s)('r?'n|^)###.*?('r?'n)###.*?(?='r?'n|$)/', '', $build);

我自己也做了这个作品:

$build = preg_replace('/([### - [[VIEW COMMENTS])(.*)([### - VIEW COMMENTS END]]])/s', '', $build);

谢谢。。。

我会使用这样的

(?s)(?<='r?'n|^)###.*?(?<='r?'n)###.*?(?='r?'n|$)

(?s)切换单一模式,使.与换行符匹配