PHP正则表达式与preg_match_all - 为什么不匹配?

I'm looking at a regular expression to match any characters. I know that the '.' is a placeholder except for newline. Given this code below:

$fruits = "One
Two
Three";
preg_match_all('/^(.*)$/', $str, $matches);
print_r($matches);

Why does it not match anything at all? I would think, $matches[0] would be One Two Three?

Add the modifier "s" to the regex:

If this modifier is set, a dot metacharacter in the pattern matches all characters, including newlines. Without it, newlines are excluded. This modifier is equivalent to Perl's /s modifier. A negative class such as [^a] always matches a newline character, independent of the setting of this modifier.

$fruits = "One
Two
Three";
preg_match_all('/^(.*)$/s', $fruits, $matches);
print_r($matches);

Update:

If you enclose $fruits in single quotes, the newline isn't treated as such and the replacement also works, event without the "s" modifier. But I don't know if the output is what you expect it to be ;)

   $fruits = 'One
Two
Three';
   preg_match_all('/^(.*)$/', $fruits, $matches);
   print_r($matches);