Вы можете сделать это следующим образом:
if (preg_match('%(<p[^>]*>.*?</p>)%i', $subject, $regs)) {
$result = $regs[1];
} else {
$result = "";
}
Вы проверяете свою строку на соответствие регулярному выражению, если есть совпадения, вы получаете первое и только первое, если нет результата $ resultбудет пустой строкой.
Если вам нужно получить больше, чем первый результат, вы можете перебрать массив $ regs.И вам нужно найти любой другой тег, измените регулярное выражение для его обработки, например, чтобы найти используемые вами теги IMAGE:
(<img[^>]*>.*?</img>)
РЕДАКТИРОВАТЬ: Если вы обрабатываете построчно(только с тем тегом, который вы ищете) вы можете поместить ^ ... $ вокруг выражения, чтобы он соответствовал полной строке, например так:
if (preg_match('%^(<p[^>]*>.*?</p>)$%im', $subject, $regs)) {
$result = $regs[1];
} else {
$result = "";
}
HTH, С уважением.