31

我在 LONGTEXT 列中有这些数据(因此保留了换行符):

Paragraph one
Paragraph two
Paragraph three
Paragraph four

我正在尝试匹配第 1 到第 3 段。我正在使用以下代码:

preg_match('/Para(.*)three/', $row['file'], $m);

这不返回任何内容。如果我尝试仅在段落的第一行内工作,则通过匹配:

preg_match('/Para(.*)one/', $row['file'], $m);

然后代码工作,我得到正确的字符串返回。我在这里做错了什么?

4

4 回答 4

64

使用s修饰符。

preg_match('/Para(.*)three/s', $row['file'], $m);

模式修饰符

于 2012-10-01T04:01:53.690 回答
13

添加多行修饰符

例如:

preg_match('/Para(.*)three/m', $row['file'], $m)
于 2012-10-01T04:00:42.187 回答
4

尝试将正则表达式设置为全点(PCRE_DOTALL),因此它包含换行符(末尾的额外 's' 参数):

preg_match('/Para(.*)three/s', $row['file'], $m);
于 2012-10-01T04:02:51.723 回答
0

如果你不喜欢/开头 and ,请使用T-Regx

$m = Pattern::of('Para(.*)three')->match($row['file'])->first();
于 2019-01-15T16:22:14.497 回答