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


Rispondi quotando