Prova questo ( ma non so se funziona in tutti i casi)

codice:
<? 
ob_start(); ?>
<div id="container"> 

<div id="centro"> 


<div id="nome1"> 
qui c'è del testo 
</div> 

<div id="nome2"> 
anche qui 
</div> 

</div></p> 

</div>
 
<?
$contents = ob_get_contents();
ob_end_clean();

function rtvStringPos($textToSearch, $searchString) {
 $arrayPosStart    = array();
 $offSet           = 0;
 $searchStr        = $searchString;
 $contents         = $textToSearch;
 $position         = strpos($contents,$searchStr,$offSet);
 while ( !($position === false)) {
  $arrayPosStart[]    = str_pad($position, 10, "0", STR_PAD_LEFT);
  $offSet             = $position + strlen($searchStr);
  $position           = strpos($contents,$searchStr,$offSet);
 } // while ( !($position === false))
 return $arrayPosStart;
} // function rtvStringPos($textToSearch, $searchString)

function annidati($array,$tagSart,$tagEnd) {
 $index = 0;
 $max   = 0;
 $sDiv  = '';
 $rDiv  = '';
 foreach ($array as $key => $value) {
  if (substr($value,10,1) == $tagSart) {
   //-------- Tag start
	 $index++;
	 $sDiv  = $value;
  } // if (substr($value,10,1) == $tagSart) 
  if (substr($value,10,1) == $tagEnd) {
   //-------- Tag end
	 if ($index > $max) {
	  $max   = $index;
	  $rDiv  = $sDiv;
	 } // if ($index > $max)
   $index = 0;	
  } // if (substr($value,10,1) == $tagEnd)  
 } // foreach ($arrMerged as $key => $value)
 $result = substr($rDiv, 0, 10);
 return $result;
} // function annidati($array,$tagSart,$tagEnd)

//---------- A indica un tag start
$arrayPosStartDiv = rtvStringPos($contents, '<div');
foreach ($arrayPosStartDiv as $key => $value) {
 $arrayPosStartDiv[$key] = "${value}A";
} // foreach ($arrayPosStartDiv as $key => $value)

//---------- B indica un tag end
$arrayPosEndDiv   = rtvStringPos($contents, '</div');
foreach ($arrayPosEndDiv as $key => $value) {
 $arrayPosEndDiv[$key] = "${value}B";
} // foreach ($arrayPosEndDiv as $key => $value)

//---------- Fusione e riordinamento degli due array
$arrMerged = array_merge ( $arrayPosStartDiv, $arrayPosEndDiv );
asort($arrMerged);

//------------- Start tag
$start = annidati($arrMerged,"A","B") ;
//------------- End tag
$arrMergedRev = array_reverse ( $arrMerged);
$end = annidati($arrMergedRev,"B","A") ;
//------------- Stampa a video
print substr($contents,$start,$end-$start+strlen('</div>'));
?>