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

Я просто не могу заставить 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>

Регулярное выражение должно быть внутри этого:

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

Возможный дубликат RegEx соответствует открытым тегам, кроме автономных тегов XHTML.

Magnus Eriksson 05.05.2018 10:59

По какой причине вы не используете DOMDocument - php.net/manual/en/class.domdocument.php? - стоит прочитать: stackoverflow.com/questions/1732348/…

konrados 05.05.2018 11:00
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
39
1

Ответы 1

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

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

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

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

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

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

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

Другие вопросы по теме