Если вы ищете (например) тег h2
, вложенный в тег a td
, где между ними есть только пробел, просто используйте \s
, который включает пробелы, символы новой строки,и т. д. например ::
preg_match('#<td>\s*<h2>(.*?)</h2>\s*</td>#i',$str,$matches);
// result is in $matches[1]
См. это в действии здесь .
Для вашего интереса, здесь это список различных модификаторов, которые выможет передавать функции preg_*
.Флаги, которые могут вас заинтересовать:
s
("dotall"): этот флаг заставляет .
соответствовать каждому символу, , включая переводы строки.Итак, скажем, ваш <h2>.....</h2>
был разбит на несколько строк.Тогда вам нужно будет сделать
preg_match('#<td>\s*<h2>(.*?)</h2>\s*</td>#is',$str,$matches);
, чтобы .*
прошел через несколько строк (см. Дополнительные s
в конце регулярного выражения?).
m
(«многострочный»): этот параметр позволяет ^
и $
соответствовать началу / концу строки , а не только началу / концу строки ,Вам это действительно нужно, только если вы используете ^
и $
в своем паттерне и хотите, чтобы они совпадали с началом / концом каждой отдельной строки в вашем входе.