PHP 在每一行上替换,即使未指定多行


php replaces on every line even though multiline not specified

我使用以下方法提取制表符描述的文本字符串的第一行:

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

这将成功打印文本字符串的第一行。但是,我想删除它,以便在此之后的每一行。然而,这

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

替换字符串中的每一行。但我没有在正则表达式中使用多行标志。为什么会这样?

MULTiLINE并不意味着

你认为它的作用。 MULTiLINE只是意味着行开始/结束锚点^$与换行符分隔的每一行匹配。

preg_replace将尽可能多地应用替换字符串(找到匹配项)。

行意味着匹配可以跨越多行,而不是只查看第一行。