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>'));
?>