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

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

于 2013-10-15T14:56:42.640 回答
1

MULTiLINE并不意味着你认为它做了什么。MULTiLINE仅表示行开始/结束锚点^,并且$与由换行符分隔的每一行匹配。

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

于 2013-10-15T14:57:14.277 回答