Export particular element in DOMDocument to string

前端 未结 3 1652
一个人的身影
一个人的身影 2021-01-18 01:34

I\'m importing some arbitrary HTML into a DOMDocument using the loadHTML() function, eg.:

$html = \'

3条回答
  •  暖寄归人
    2021-01-18 02:12

    Perhaps the source code of this will help - They're using a regex to strip out the unnecessary strings:

    http://beerpla.net/projects/smartdomdocument-a-smarter-php-domdocument-class/

    $content = preg_replace(array("/^\<\!DOCTYPE.*?/si",
                                      "!$!si"),
                                "",
                                $this->saveHTML());
    
    return $content;
    

    saveHTMLExact() - DOMDocument has an extremely badly designed "feature" where if the HTML code you are loading does not contain and tags, it adds them automatically (yup, there are no flags to turn this behavior off).

    Thus, when you call $doc->saveHTML(), your newly saved content now has and DOCTYPE in it. Not very handy when trying to work with code fragments (XML has a similar problem).

    SmartDOMDocument contains a new function called saveHTMLExact() which does exactly what you would want – it saves HTML without adding that extra garbage that DOMDocument does.

    Also, other questions have asked similar things:

    How to saveHTML of DOMDocument without HTML wrapper?

提交回复
热议问题