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