Я думаю, что
foreach ($matches as $match) {
doSomething with $match[1];
}
должен сделать свое дело. $matches
должен содержать список каждого совпадения, где совпадение состоит из всей совпадающей строки, а затем групп. Поскольку в каждом совпадении есть только одна группа, которая вас интересует, $match[1]
должен предоставить вам содержание абзаца, $match[0]
весь абзац с тегами <p>
.