$mass = preg_match_all('~<p>.*</p>~U',"<p>Первый абзац</p><p>Второй абзац</p><p>Третий абзац</p><p>Четвертый абзац</p><p>Пятый абзац</p>", $rezult);
for($i=0; $i<count($rezult[0]); $i++)
{
if($i == 3)
$str[] = "<p>новый абзац</p>";
$str[] = $rezult[0][$i];
}
Или так:
$mass = preg_match_all('~<p>.*</p>~U',"<p>Первый абзац</p><p>Второй абзац</p><p>Третий абзац</p><p>Четвертый абзац</p><p>Пятый абзац</p>", $rezult);
for($i=0; $i<count($rezult[0]); $i++)
$str[] = ($i == 3) ? " <p>Новый абзац</p>".$rezult[0][$i] : " ".$rezult[0][$i];
$end = implode(' ',$str);