Регулярное выражение, заканчивающийся тегом в другой строке

Я просто не могу получить regex работать когда start тег и ending теги находятся в разных строках.

Начальный тег должен быть <p class="psku"> а также

окончание </span></p>

<p class="psku">Number: rrfaee220-1</p>
<p class="availability order-only">Delivery: <span> 1-2 months</span></p>

Regex должен быть в пределах этого:

preg_match_all("/<p class=\"psku\">SOMETHINGREGEX</span></p>/", $string, $info);

0

Решение

Прежде всего, вы используете / в качестве разделителей в вашем регулярном выражении. Это нормально, но вы должны избегать косых черт внутри регулярного выражения, как это:

/<p class=\"psku\">SOMETHINGREGEX<\/span><\/p>/

Если вы похожи на меня и думаете, что это выглядит беспорядочно, вы также можете выбрать другой символ в качестве разделителя:

@<p class=\"psku\">SOMETHINGREGEX</span></p>@

Кроме того, что у вас внутри SOMETHINGREGEX? Я подозреваю, что он содержит точку (.). Чтобы точка соответствовала символам новой строки и растягивалась на несколько строк, необходимо добавить s модификатор:

@<p class=\"psku\">SOMETHINGREGEX</span></p>@s

Однако, как упомянуто @konrados, использование DOMDocument было бы лучшим выбором здесь. Использование регулярных выражений для разбора HTML очень ненадежно, так как вам приходится учитывать множество вариантов форматирования: теги, написанные заглавными буквами, пробелы в местах, которые вы не ожидаете, и т. Д. Однако, если вы уверены, что весь ваш ввод отформатированный таким же образом, регулярное выражение должно сделать свое дело.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector