#php #html-parsing #pcre
#php #html-синтаксический анализ #pcre
Вопрос:
итак, мне нужно взять весь div с классом «1», но он останавливается на окончании класса div «1.1», поэтому я хочу получить из этого:
<head>
</head>
<body>
<div class="1">
<p>blah blah blah</p>
<div class="1.1">
trolololol
</div>
<div class="1.2">
trolo2lolo
</div>
</div>
</body>
только это:
<div class="1">
<p>blah blah blah</p>
<div class="1.1">
trolololol
</div>
<div class="1.2">
trolo2lolo
</div>
</div>
но пока я получаю только:
<div class="1">
<p>blah blah blah</p>
<div class="1.1">
trolololol
</div>
Ответ №1:
Регулярные выражения не настолько умны, чтобы подсчитывать, сколько тегов вы открыли, и их нужно закрыть перед остановкой сопоставления. Это останавливается при первом появлении </div>
. Попробуйте использовать настоящий анализатор html, если вы хотите получить доступ к тегам как к реальным тегам, а не как к строкам.
Ответ №2:
Регулярные выражения не должны использоваться для анализа документов, таких как XML, HTML, «BBCode», JSON… Вам следует поискать настоящий анализатор DOM, например, расширение DOM в PHP