У меня есть этот блок HTML:
<div>
<p>First, nested paragraph</p>
</div>
<p>First, non-nested paragraph.</p>
<p>Second paragraph.</p>
<p>Last paragraph.</p>
Я пытаюсь выбрать первый невложенный абзац в этом блоке. Я использую preg_match PHP (стиль perl), чтобы найти его, но не могу понять, как игнорировать тег p, содержащийся в div.
Это то, что у меня есть до сих пор, но оно выбирает содержимое первого абзаца, содержащегося выше.
/<p>(.+?)<\/p>/is
Спасибо!
РЕДАКТИРОВАТЬ
К сожалению, у меня нет такой роскоши, как парсер DOM.
Я полностью признателен за предложения не использовать RegEx для синтаксического анализа HTML, но это не очень помогает моему конкретному варианту использования. У меня очень контролируемый случай, когда внутреннее приложение генерировало структурированный текст.Я пытаюсь заменить текст, если он соответствует определенному шаблону. Это упрощенный случай, когда я пытаюсь игнорировать текст, вложенный в другой текст, и HTML был самым простым случаем, который я мог придумать для объяснения. Мой реальный случай выглядит примерно так (но гораздо больше данных и уменьшено):
#[BILLINGCODE|12345|11|15|2001|15|26|50]#
[ITEM1|{{Escaped Description}}|1|1|4031|NONE|15]
#[{{Additional Details }}]#
[ITEM2|{{Escaped Description}}|3|1|7331|NONE|15]
[ITEM3|{{Escaped Description}}|1|1|9431|NONE|15]
[ITEM4|{{Escaped Description}}|1|1|5131|NONE|15]
Мне нужно переформатировать определенный столбец определенных строк в тонну строк, подобных этому. Ответ на мой первый вопрос поможет реальному проекту.