Я просто не могу получить 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);
Прежде всего, вы используете /
в качестве разделителей в вашем регулярном выражении. Это нормально, но вы должны избегать косых черт внутри регулярного выражения, как это:
/<p class=\"psku\">SOMETHINGREGEX<\/span><\/p>/
Если вы похожи на меня и думаете, что это выглядит беспорядочно, вы также можете выбрать другой символ в качестве разделителя:
@<p class=\"psku\">SOMETHINGREGEX</span></p>@
Кроме того, что у вас внутри SOMETHINGREGEX
? Я подозреваю, что он содержит точку (.
). Чтобы точка соответствовала символам новой строки и растягивалась на несколько строк, необходимо добавить s
модификатор:
@<p class=\"psku\">SOMETHINGREGEX</span></p>@s
Однако, как упомянуто @konrados, использование DOMDocument было бы лучшим выбором здесь. Использование регулярных выражений для разбора HTML очень ненадежно, так как вам приходится учитывать множество вариантов форматирования: теги, написанные заглавными буквами, пробелы в местах, которые вы не ожидаете, и т. Д. Однако, если вы уверены, что весь ваш ввод отформатированный таким же образом, регулярное выражение должно сделать свое дело.
Других решений пока нет …