PHP preg_match(。*)与以前的换行符不匹配

时间:2012-10-01 03:58:27

标签: php preg-match

我在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 个答案:

答案 0 :(得分:51)

使用s修饰符。

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

http://php.net/manual/en/reference.pcre.pattern.modifiers.php

答案 1 :(得分:11)

添加multi-line modifier

例如:

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

答案 2 :(得分:4)

尝试将正则表达式设置为dot-all(结尾处的额外's'参数),因此它包含换行符:

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

答案 3 :(得分:0)

如果您一开始不喜欢/和and,请使用T-Regx

$m = Pattern::of('Para(.*)three')->match($row['file'])->first();