2017-06-13 4 views
-1

私は文字列から(複数行コメント用)PHPで、複数行のpreg_repl

<!-- bof_foo --> 
some content 
<!-- eof_foo --> 

を削除したい場合は、preg_replためpatternパラメータは何ですか?

$pattern = "/<!-- bof_foo -->[.\n]*<!-- eof_foo -->/"; 

と思ったでしょうが、それはしませんでした。

+1

[回答](https://stackoverflow.com/a/21574655/3832970)を参照してください。 '[。\ n]'はドットと改行にマッチすることに注意してください。/[! - bof_foo - >。*?<! - eof_foo - >/s "' –

+1

'[。\ n] *'を '[\ S \ s] * 'に変更することができます。あなたは行くのが良いです。 To @WiktorStribiżew:これは、[HTMLコメントを取り除くためのRegExp](https://stackoverflow.com/questions/1084741/regexp-to-strip-html-comments)の複製ではありません。そこでは、問題は_any_コメントだけを取り除く方法です。この問題は、固定_fromコメントをコメントのすべての方法で削除する方法です。 – sln

+0

この '] *? - >'をHTMLコメントに一致させるために使用しないでください。受け入れられた答えのバージョンの1つは、そのように複製と呼ばれていました。それは ' >> - >' – sln

答えて

0

変更

$pattern = "/<!-- bof_foo -->[\S\s]*?<!-- eof_foo -->/"; 

にこの

$pattern = "/<!-- bof_foo -->[.\n]*<!-- eof_foo -->/"; 

、それが動作します。

+1

'$ pattern ="/<! - bof_foo [\ s \ S] *?eof_foo - >/";' –