PHP preg_replace регулярное выражение, которое соответствует нескольким строкам
Как мне создать регулярное выражение, которое учитывает, что тема состоит из нескольких строк?
Модификатор " m " для одного, похоже, не работает.
Ответ 1
Максвелл Трой Милтон Кинг прав, но поскольку его ответ немного короткий, я также опубликую его и приведу примеры для иллюстрации.
Во-первых, метасимвол . по умолчанию НЕ соответствует разрыву строки. Это справедливо для многих реализаций регулярных выражений, включая PHP-вкус. При этом возьмите текст:
$text = "Line 1\nLine 2\nLine 3";
и регулярное выражение
'/.*/'
то регулярное выражение будет соответствовать только Line 1. Посмотрите сами:
так как .* "перестает соответствовать" на \n (новая строка char). Если вы хотите, чтобы это соответствовало разрыву строк, добавьте модификатор s (модификатор DOT-ALL) в конце вашего регулярного выражения:
Теперь о m-модификаторе (многострочном): это позволит ^ совместить не только начало входной строки, но и начало каждой строки. То же самое с $: это позволит $ совместить не только конец входной строки, но и конец каждой строки.