3

他の回答を確認しましたが、次のことができないようです。誰かを助けてください:)

特定の 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

事前に確認して回答していただきありがとうございます:)

4

2 に答える 2

8

ありがとう @mlwacosmos - あなたが提供したリンクを使用してください。

以下で達成:

$startPoint = '<!-- START IF USER_ID -->';
$endPoint = '<!-- END IF USER_ID -->';
$result = preg_replace('#('.preg_quote($startPoint).')(.*)('.preg_quote($endPoint).')#siU', '', $html);
于 2012-12-11T16:43:38.283 に答える
3

その正規表現は問題ないようです。m修飾子を使用して、ドットを改行に一致させます。

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

または、代わりに次のものを使用できます[\s\S]

"/<!-- START IF USER_ID -->[\s\S]*?<!-- END IF USER_ID -->/"
于 2012-12-11T16:43:53.470 に答える