AllesMeins: HTML-Tags gruppieren und zählen

Hiho,

ich würde gerne in einem String das vorkommen von bestimmten HTML Tags zählen. Zuvor sollen die Tags aber gruppiert werden, so das ich am Ende eine Liste erhalte mit etwas wie:

5 img-tags
7 a-Tags
14 span-tags
usw.

Das suchen der Tags sollte ja per Reguläre Expresion leicht machbar sein, aber wie bekomme ich die Ergebnisse möglichst effektiv in ein Format das sich gut durchzählen lässt. Weil es wäre ja irgendwie ein wenig suboptimal wenn ich einfach den Text X mal durchnudele, einmal für <img, einmal für <a usw. Aber soetwas wie "<(img|span|a|) .*>" oder so ähnlich liefert mir ja alle Ergebnisse wild durcheinander. Das lkann ich dann ja auch nur sehr ineffelktiv zählen (indem ich nochmal durch die ganze Ergebnissliste gehe und jedes ergebniss einzeln auszähle.

Gibt es einen effektiveren Weg?

Grüsse

Marc

  1. Hi,

    Aber soetwas wie "<(img|span|a|) .*>" oder so ähnlich liefert mir ja alle Ergebnisse wild durcheinander.

    das ist dem assoziativen Array, mit welchem Du zählst, reichlich Wurscht.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hiho,

      aber wie bekomme ich die ergebnisse des regEx in einen assoziativen Array? Die RegExp-Funktionen die ich kennen liefern mir entweder ein "Muster passt" bzw. "Muster passt nicht" zurück oder aber einen Array mit allen Fundstellen. Aber nicht einen Wert wie 'span' den ich dann in nen Array einfügen könnte um dann erst den regex weite rlaufen zu lassen...

      Grüsse

      Marc

      1. AllesMeins,

        aber wie bekomme ich die ergebnisse des regEx in einen assoziativen Array? Die RegExp-Funktionen die ich kennen liefern mir entweder ein "Muster passt" bzw. "Muster passt nicht" zurück oder aber einen Array mit allen Fundstellen.

        Hilft dir https://forum.selfhtml.org/?t=117410&m=752024?

        Live long and prosper,
        Gunnar

        --
        „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
  2. Hallo!

    ich würde gerne in einem String das vorkommen von bestimmten HTML Tags zählen. Zuvor sollen die Tags aber gruppiert werden, so das ich am Ende eine Liste erhalte mit etwas wie:

    5 img-tags
    7 a-Tags
    14 span-tags
    usw.

    wenn Du PHP5 zur Verfügung hast, würde ich es mit der DOM extension versuchen:

      
    <?php  
    $tags = array('img', 'a', 'span');  
    $dom = new DOMDocument();  
    $dom->loadHTML($html);  
      
    foreach ($tags as $tag) {  
      $list = $dom->getElementsByTagName($tag);  
      echo $tag . ": " . $list->length . "\n";  
    }  
    ?>
    

    kannst damit auch solche Sachen machen:

      
    <?php  
    $dom = new DOMDocument();  
    $dom->loadHTML($html);  
      
    $list = $dom->getElementsByTagName('p');  
    foreach ($list as $item) {  
      echo $item->nodeValue . "\n";  
    }  
    ?>
    

    Das gibt eine Liste mit sämtlichen Texten in <p></p> aus.

    Allerdings weiß ich nicht wie sich das verhält wenn Du kaputtes/invalides HTML verwendest.

    Grüße
    Andreas

    --
    SELFHTML Tipps & Tricks: http://aktuell.de.selfhtml.org/tippstricks/
  3. ich würde gerne in einem String das vorkommen von bestimmten HTML Tags zählen. Zuvor sollen die Tags aber gruppiert werden, so das ich am Ende eine Liste erhalte mit etwas wie:

    5 img-tags
    7 a-Tags
    14 span-tags
    usw.

    Vielleicht mit einem Array, wo die Elementtypnamen als Index benutzt werden.

    WENN (tag in tagliste enthalten (mit Regex prüfen) )
    DANN tagzahler[tag]++

    Shenga