0

<!--sliderStart-->HTMLソースコードの文字列を開始と終了で一致させようとしています<!--sliderEnd-->

例1:

<!--sliderStart-->
<p>blah</p>
<p>blah2</p>
<!--sliderEnd-->

例2:

<!--sliderStart--><p>blah</p><p>blah2</p><!--sliderEnd-->

これは私のパターンですが、効率的に機能していません。

$pattern = "/<!--sliderStart-->[^\n]+(.*?)<!--sliderEnd-->/";

このマッチングの正確なパターンは何ですか?

4

2 に答える 2

4

なぜ[^\n]+正規表現で使用しているのですか?これは、正規表現エンジンに、一致さたい改行を一致させないように指示します。

単にそれを取り除くだけで、あなたは行ってもいいです:

$pattern = "/<!--sliderStart-->(.*?)<!--sliderEnd-->/s";

更新s:最後の修飾子を忘れないでください。これにより、.も改行に一致します。
@Palladiumに感謝します。

于 2012-07-20T15:19:01.240 に答える
3

正規表現のドットは、指示しない限り改行と一致しません。s次のように、正規表現の最後に修飾子が必要です。

$pattern = '/<!--sliderStart-->(.*?)<!--sliderEnd-->/s';
于 2012-07-20T15:21:35.180 に答える