Pues termine solucionándolo así, no creo que sea la mejor salida pero por ahora hace lo que necesito.
Código PHP:
Ver original$patron = '/<h3>(.+?)<\/h3>/s';
$start = 0;
foreach($matches[0] as $count => $h3)
{
$length = strpos($text, $matches[0][$count + 1]) - strpos($text, $matches[0][$count]); if(isset($matches[0][$count + 1])) {
$_content = substr($text, $start, $length); }
else
{
$_content = substr($text, $start); }
$start = strpos($text, $matches[0][$count + 1]); }
Saludos!