0

我正在查看一个正则表达式来匹配任何字符。我知道'。是一个占位符,除了换行符。鉴于以下代码:

$fruits = "One\nTwo\nThree";
preg_match_all('/^(.*)$/', $str, $matches);
print_r($matches);

为什么它根本不匹配任何东西?我想,$matches[0] 会是一二三?

4

1 回答 1

2

修饰符“s”添加到正则表达式

如果设置了此修饰符,则模式中的点元字符匹配所有字符,包括换行符。没有它,换行符被排除在外。这个修饰符等价于 Perl 的 /s 修饰符。诸如 [^a] 之类的否定类始终匹配换行符,与此修饰符的设置无关。

$fruits = "One\nTwo\nThree";
preg_match_all('/^(.*)$/s', $fruits, $matches);
print_r($matches);

更新:

如果您将 $fruits 括在单引号中,则不会将换行符视为这样,并且替换也有效,没有“s”修饰符的事件。但我不知道输出是否是你所期望的;)

   $fruits = 'One\nTwo\nThree';
   preg_match_all('/^(.*)$/', $fruits, $matches);
   print_r($matches);
于 2012-11-11T23:40:09.190 回答