PHP DOM - counting child nodes?

后端 未结 3 788
情深已故
情深已故 2020-12-20 15:52

HTML snippet #1

headline

HTML snippe

3条回答
  •  心在旅途
    2020-12-20 16:09

    Just count non-text nodes in your loop:

    $count = 0;
    foreach($div->childNodes as $node)    
      if(!($node instanceof \DomText))      
        $count++;
    
    print $count;
    

    Using xpath:

    $nodesFromDiv1 = $xpath->query("//div[1]/*")->length;
    $nodesFromDiv2 = $xpath->query("//div[2]/*")->length;
    

    To remove empty text nodes, when preserveWhiteSpace=false is not working (as I suggested in the chat):

    $textNodes = $xpath->query('//text()');
    
    foreach($textNodes as $node)
      if(trim($node->wholeText) === '')
        $node->parentNode->removeChild($node);
    

提交回复
热议问题