PHP preg_match_all + str_replace

Мне нужно найти способ заменить все <p> во всех <blockquote> перед <hr />.

Вот пример html:

<p>2012/01/03</p> <blockquote> <h4>File name</h4> <p>Good Game</p> </blockquote> <blockquote><p>Laurie Ipsumam</p></blockquote> <h4>Some title</h4> <hr /> <p>Lorem Ipsum</p> <blockquote><p>Laurel Ipsucandescent</p></blockquote> 

Вот что я получил:

  $pieces = explode("<hr", $theHTML, 2); $blocks = preg_match_all('/<blockquote>(.*?)<\/blockquote>/s', $pieces[0], $blockmatch); if ($blocks) { $t1=$blockmatch[1]; for ($j=0;$j<$blocks;$j++) { $paragraphs = preg_match_all('/<p>/', $t1[$j], $paragraphmatch); if ($paragraphs) { $t2=$paragraphmatch[0]; for ($k=0;$k<$paragraphs;$k++) { $t1[$j]=str_replace($t2[$k],'<p class=\"whatever\">',$t1[$j]); } } } } 

Я думаю, что я действительно близкий, но я не знаю, как вернуть обратно html, который я только что выложил и изменил.