@sohav

Как регуляркой вырезать контент между тегами учитывая структуру dom?

Есть вот такой html-код:
<div class="article">
	<p class="title">Test!</p>
	<div>Content content</div>
	<p>test test</p>
	<div class="test">test</div>
	<p>test</p>
</div>
<?= rand(0,100); ?>
<div class="article">
	<p class="title">Test1!</p>
	<div>Content content1</div>
	<p>test test1</p>
	<div class="test">test1</div>
	<p>test1</p>
</div>


Подскажите, пожалуйста, регулярку, которая бы выбрала контент внутри тегов div.article.

Пробую /<div class="article">(.*?)<\/div>/igs, но все зарубается на первом вхождении </div>, можно поставить флаг U, но тоже не тот результат :-(
Хочется сделать это именно регулярками, а не парсером xml

Вот ссылочка на песочницу - https://regex101.com/r/6HDlxK/1/

Спасибо!
  • Вопрос задан
  • 792 просмотра
Решения вопроса 1
@ns5d
нечего сказать
1. находим все div.article: regex101.com/r/z6RRM7/1
2. удаляем теги "<[^>]*>" => ""
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@vyrkmod
Пишу на php. И не стыдно.
Скорее всего дело не в регулярке, а в использовании preg_match() вместо preg_match_all(). И да, не могу удержаться чтоб не запостить эту ссылку.
Ответ написан
Комментировать
parserpro
@parserpro
По-уму такое делается SAX-парсером, а не регуляркой.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы