The .
character in a PHP regex accepts all characters except a newline. What can I use to accept ALL characters, including newlines?
For example:
$text = <<<TEXT
foo
bar
TEXT;
preg_match('/.+/', $text, $match);
echo $match[0];
This returns foo
, but I need the full string match to be returned as:
foo
bar
This is commonly used to capture all characters:
[\s\S]
You could use any other combination of "Type-X + Non-Type-X" in the same way:
[\d\D]
[\w\W]
but [\s\S]
is recognized by convention as a shorthand for "really anything".
You can also use the .
if you switch the regex into "dotall" (a.k.a. "single-line") mode via the "s"
modifier. Sometimes that's not a viable solution (dynamic regex in a black box, for example, or if you don't want to modify the entire regex). In such cases the other alternatives do the same, no matter how the regex is configured.