2

私はmysqlフィールドにこのデータを持っています:

First text text text text
 text text text text
 text text text text text text
 text text text text text text

Second text text text text
 text text text text
 text text text text text text
 text text text text text text

最初の単語から二重改行まで一致を予測しようとしています。私はもう試した:

preg_match('/First(.*)\n\n/', $mysqlrow, $m);

これは行を返しません。また、適切な文字列を返さない修飾子mと修飾子も試しました。何も返さないものsも試してみました。\r\n

これはどうやるんですか

4

3 に答える 3

7

修飾子が必要でありs、ワイルドカード量指定子を非貪欲に変更する必要もあります。

preg_match('/First(.*?)\n\n/s', $mysqlrow, $m);

このsオプションにより、.ワイルドカードが一致\nし、貪欲ではないオプションにより、一致する前にワイルドカードが実行*されるすべてを消費しなくなります。\n\n\n\n

データベースにある場合に備えて、必要に応じて一致\rさせることもできます。

preg_match('/First(.*?)\r?\n\r?\n/s', $mysqlrow, $m);
于 2012-10-01T05:54:57.170 に答える
2

それはあなたが必要とする他のフラグです。フラグ「s」は、ドットが改行をキャプチャできるようにします。しかし、それはあなたのダブル '\n' を食べます。

あなたが試すことができます :

preg_match('/First(.*?)\n\n/s', $mysqlrow, $m);

とともに ?貪欲な行動を逆転させます。文字列の分割は、ケースにより適している可能性がある split 関数を使用して実行できることに注意してください。

于 2012-10-01T05:55:45.833 に答える