Я хочу найти все блоки ‹h3› в этом примере:
<h3>sdf</h3>
sdfsdf
<h3>sdf</h3>
32
<h2>fs</h2>
<h3>23sd</h3>
234
<h1>h1</h1>
(От h3 к другому h3 или h2) Это регулярное выражение находит только первый блок h3
~\<h3[^>]*\>[^>]+\<\/h3\>.+(?:\<h3|\<h2|\<h1)~is
Я использую функцию php preg_match_all (цитата из документов: После обнаружения первого совпадения последующие поиски продолжаются с конца последнего совпадения.)
Что мне нужно изменить в моем регулярном выражении?
ps
<h3>1</h3>
1content
<h3>2</h3>
2content
<h2>h2</h2>
<h3>3</h3>
3content
<h1>h1</h1>
этот контент должен быть проанализирован как:
[0] => <h3>1</h3>1content
[1] => <h3>2</h3>2content
[2] => <h3>2</h3>3content
.+
на.+?
и замените группу без захвата на опережающую. Обратите внимание, что угловые скобки и косые черты не нужно экранировать, поскольку в качестве разделителя используется~
. - person Casimir et Hippolyte   schedule 04.04.2014DOMDocument
иDOMXPath
. Сделай себе жизнь проще :) - person Darragh Enright   schedule 04.04.2014