我正在查看一个正则表达式来匹配任何字符。我知道'。是一个占位符,除了换行符。鉴于以下代码:
$fruits = "One\nTwo\nThree";
preg_match_all('/^(.*)$/', $str, $matches);
print_r($matches);
为什么它根本不匹配任何东西?我想,$matches[0] 会是一二三?
我正在查看一个正则表达式来匹配任何字符。我知道'。是一个占位符,除了换行符。鉴于以下代码:
$fruits = "One\nTwo\nThree";
preg_match_all('/^(.*)$/', $str, $matches);
print_r($matches);
为什么它根本不匹配任何东西?我想,$matches[0] 会是一二三?
如果设置了此修饰符,则模式中的点元字符匹配所有字符,包括换行符。没有它,换行符被排除在外。这个修饰符等价于 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);