Ничего вы не перебираете, просто будет дан ответ о наличии совпадений, а что в чем неизвестно. Проверяйте, изменяя текст:
$s = 'aasdf <div><p>dd
fghfg
dfgdf</p></div> jkfdf
aasdf <blockquote>
<p>dd
fghfg
dfgdf</p> </blockquote>jkfdf';
echo preg_match('/<div>.*?<p>.+<\/p>.*?<\/div>|<blockquote>.*?<p>.+<\/p>.*?<\/blockquote>/s', $s) ? 1 : 0;
Не понятна цель проверки (проверка корректности вложения, либо просто найти), но скорее лучше найти парные теги div и blockquote, а затем проверив в них наличие параграфа, тогда еще можно ответить на вопрос какой параграф во что вложен. Искать параграф в окружении тоже можно, но будет сложнее. И нужен модификатор s, так как в окружении могут быть и переводы строк, без модификатора m.