.
не соответствует новым строкам - и это специально (хотя я не совсем уверен, почему). Чтобы изменить это поведение, вы должны использовать модификатор s
и заставить .
соответствовать всем символам, включая символ новой строки.
Пример:
$text = "Foobar\n123"; // This is the text to match
preg_match('/^Foo.*\d+$/', $text); // This is not a match; the s flag isn't used
preg_match('/^Foo.*\d+$/s', $text); // This is a match, since the s flag is used