trunx: html-Dokumentstruktur

Beitrag lesen

Hi,

@dr.Colossos: also unter Verwendung deines code-Schnipsels sieht das Ganze jetzt bei mir wie folgt aus:

<?php
$pattern = '/(<(?:[^<>]+(?:"[^"]*"|'[^']*')?)+>)/';
$inhalt_ht = preg_replace('/(\s+)/', ' ', $dat_cont);
$html_arr1 = preg_split($pattern, trim($inhalt_ht), -1,
PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
$html_array = array();
$html_str ="";
$html_len = 0;
#Entfernung der Leerzeichen
foreach($html_arr1 as $htar) {
  if($htar!=chr(32)) {
    $html_array[] = $htar;
    $html_str .= $htar;
    $html_len++;
} }
$mono_tag = array('area', 'base', 'basefont', 'br', 'col', 'frame', 'hr', 'img', 'input', 'isindex', 'link', 'meta', 'param');
function struktur_array($start,$ende) {
global $mono_tag, $html_array, $html_str;
$struktur = array();
for($i=$start;$i<$ende;$i++) {
  $hta = $html_array[$i];
    if($hta{0}=="<") {
      if($hta{1}=="!" || $hta{1}=="?") {
        if($hta{2}=="-") {
          $kom = "";
          while(strpos($html_array[$i],"-->")===false) {
            $kom .= $html_array[$i];
            $i++;
          }
          $hta=$kom.$html_array[$i];
        }
        array_push($struktur,htmlentities($hta));
      } else {
        if(($pos=strpos($hta," "))===false)
          $pos=strpos($hta,">");
        $tag_name = substr($hta,1,$pos-1);
        if(array_search($tag_name,$mono_tag)!==false) {
          array_push($struktur,htmlentities($hta));
        } else {
          $tag_start=$i+1;
          array_push($struktur,htmlentities($hta));
          $count_tag=0;
          $count_end=0;
          for($j=$i+1;$j<$ende;$j++) {
            if(strpos($html_array[$j],"<".$tag_name)!==false) {
              if($count_tag==0)
                $count_end=$j;
              $count_tag++;
            }
            if(strpos($html_array[$j],"</".$tag_name)!==false && $count_tag==0) {
              $i=$j;
              break;
            } elseif(strpos($html_array[$j],"</".$tag_name)!==false && $count_tag!=0)
              $count_tag--;
          }
          if($count_tag!=0) {
            if($count_end!=0)
              $i=$count_end;
            else
              $i=$ende;
          }
          $tag_ende=$i;
          if($tag_start!=$i)
            $unter_tag=struktur_array($tag_start,$tag_ende);
          if(count($unter_tag)!=0)
            array_push($struktur,$unter_tag);
          array_push($struktur,htmlentities($html_array[$i]));
        }
      }
    } else {
      array_push($struktur,htmlentities($html_array[$i]));
    }
  }
return $struktur;
}

$struktur = struktur_array(0,$html_len);

echo "<pre>";
print_r($struktur);
echo "</pre";
?>

bye trunx

--
Die Standard-Antwort: "Bitte benutze die Forum-Suche!" macht die Forum-Suche kaputt, weil die Suche dann nämlich genau vor allem diese Standard-Antwort, also Müll liefert. Sinnvoller ist stattdessen folgende Standard-Antwort: "Dieses Thema wurde schon vielfach im Forum besprochen, siehe z.B. <u>hier</u> oder <u>hier</u> oder benutze die Forum-Suche z.B. mit den Stichworten 'Stichwort1 Stichwort2' ."