Задать вопрос
@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/

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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽