-2

テキスト領域の値を取得し、それを正規表現で実行して行に分割しようとしています。

したがって、誰かが行を書いてから入力し、別の行を入力して i を入力すると、配列値ごとに各行の配列が作成されます

これまでに思いついた表現は次のとおりです。

 (.+?)\n|\G(.*)

これが私がそれを使用する方法です(式をテストするために使用するWebサイトhttp://myregextester.com/から)

 $sourcestring="
 this is a sentense yeaa
 interesting sentense
 yet another sentese
 ";
 preg_match_all('/(.+?)\n|\G(.*)/',$sourcestring,$matches);
 echo "<pre>".print_r($matches,true);

ただし、配列には常に空のオブジェクトが1つあり、それを取り除く方法を見つけようとしています。

ありがとうございます。

4

3 に答える 3

1

これにより、配列の最初と最後の空の行が削除されます。

explode("\n", trim($sourcestring));

例を参照してください:http://viper-7.com/pNqtvV

于 2012-08-03T18:08:04.913 に答える
1

これには正規表現は必要ありませんexplode()。次のように使用するだけです。

$lines = explode( "\n",  trim( $input));

これで、ユーザーの各行が$inputの 1 つの配列エントリになり$linesます。

于 2012-08-03T18:05:20.007 に答える
0

改行にはさまざまな種類があります。HTMLフォームのコンテキストでは、通常CR LF、行末に対して受け取ります。ダム爆発でもかまいませんが、を使用すると正規表現がすべてのバリエーションをキャッチします\R。したがって\r\n、and\nまたは\rその他は次のように処理されます。

 $lines = preg_split(':\R:', $text);

preg_split()PHPのexplode()と同等です。したがって、を使用する必要はありませんpreg_match_all

于 2012-08-03T18:09:18.637 に答える