PHP DOM get nodevalue html? (without stripping tags)

前端 未结 2 1155
面向向阳花
面向向阳花 2020-12-01 03:29

I am trying to get the innerhtml of div tags in a file using nodeValue, however this code is outputting only plain text and seems to strip out all html tag from inside the d

相关标签:
2条回答
  • 2020-12-01 04:18

    I have never done what you're attempting to do, but as a stab in the dark, using the API docs, does echo $entry->textContent; work?

    Adding an update. This is from the comments located on the docs page for DOMNode:

    Hi!

    Combining all th comments, the easiest way to get inner HTML of the node is to use this function:

    <?php  function get_inner_html( $node ) { 
        $innerHTML= ''; 
        $children = $node->childNodes; 
        foreach ($children as $child) { 
            $innerHTML .= $child->ownerDocument->saveXML( $child ); 
        } 
    
        return $innerHTML;  }  ?>
    

    Or, maybe a simpler method is just to do:

    echo $domDocument->saveXML($entry);
    
    0 讨论(0)
  • 2020-12-01 04:22

    Instead of:

    echo $entry->nodeValue;
    

    You have to use:

    echo $doc->saveXML($entry);
    

    Here is a more complete example that might help others too, $doccontent is the HTML block as a string:

    $doccontent = '<html> …'; // your html string
    $dom = new DOMDocument;
    $internalErrors = libxml_use_internal_errors(true); // prevent error messages 
    $content_utf = mb_convert_encoding($doccontent, 'HTML-ENTITIES', 'UTF-8'); // correct parsing of utf-8 chars
    $dom->loadHTML($content_utf);
    libxml_use_internal_errors($internalErrors); // prevent error messages 
    $specialdiv = $dom->getElementById('xdiv');
    if(isset($specialdiv))
    {
        echo $dom->saveXML($specialdiv);
    }
    
    0 讨论(0)
提交回复
热议问题