1

これを使用して、タブで区切られたテキスト文字列の最初の行を抽出します。

$column_pattern = "/(.*?)\r\n/";
preg_match($pattern, $tsv, $columns);
print_r($columns[0]);

これにより、テキスト文字列の最初の行が正常に印刷されます。ただし、削除したいので、この後にすべての行があります。しかし、これは

$rows = preg_replace($column_pattern, "", $tsv);
echo $rows;

文字列のすべての行を置き換えます。しかし、正規表現で複数行フラグを使用していません。なぜこれがこのように振る舞うのでしょうか?

4

2 に答える 2

1

multiline は、一致が複数の行にまたがる可能性があることを意味します。最初の行だけを見るという意味ではありません。

于 2013-10-15T14:56:42.640 に答える
1

MULTiLINEあなたが思っていることを意味するものではありません。MULTiLINEjust は、行の開始/終了アンカー^を意味し$、改行文字で区切られたすべての行に一致します。

preg_replace置換文字列を可能な限り何度でも適用します (一致が見つかりました)。

于 2013-10-15T14:57:14.277 に答える