31

このデータはLONG​​TEXT列にあります(改行は保持されます):

Paragraph one
Paragraph two
Paragraph three
Paragraph four

段落1から3に一致させようとしています。次のコードを使用しています。

preg_match('/Para(.*)three/', $row['file'], $m);

これは何も返しません。段落の最初の行内で作業しようとすると、次のように一致します。

preg_match('/Para(.*)one/', $row['file'], $m);

次に、コードが機能し、適切な文字列が返されます。私はここで何が間違っているのですか?

4

4 に答える 4

64

s修飾子を使用します。

preg_match('/Para(.*)three/s', $row['file'], $m);

パターン修飾子

于 2012-10-01T04:01:53.690 に答える
13

複数行の修飾子を追加します。

例えば:

preg_match('/Para(.*)three/m', $row['file'], $m)
于 2012-10-01T04:00:42.187 に答える
4

正規表現をdot-all(PCRE_DOTALL)に設定して、改行(最後に余分な's'パラメーター)が含まれるようにしてください。

preg_match('/Para(.*)three/s', $row['file'], $m);
于 2012-10-01T04:02:51.723 に答える
0

最初ととが気に入らない場合は、 T-Regx/を使用してください

$m = Pattern::of('Para(.*)three')->match($row['file'])->first();
于 2019-01-15T16:22:14.497 に答える