PHP DOMDocument replace DOMElement child with HTML string

后端 未结 5 1581
[愿得一人]
[愿得一人] 2020-12-31 13:09

Using PHP I\'m attempting to take an HTML string passed from a WYSIWYG editor and replace the children of an element inside of a preloaded HTML document with the new HTML.

5条回答
  •  执念已碎
    2020-12-31 14:02

    If the HTML string can be parsed as XML, you can do this (after clearing the element of all child nodes):

    $fragment = $doc->createDocumentFragment();
    $fragment->appendXML($html_string);
    $element->appendChild($fragment);
    

    If $html_string cannot be parsed as XML, it will fail. If it does, you’ll have to use loadHTML(), which is less strict — but it will add elements around the fragment which you will have to strip.

    Unlike PHP, Javascript has the innerHTML property which allows you to do this very easily. I needed something like it for a project so I extended PHP’s DOMElement to include Javascript-like innerHTML access.

    With it you can access the innerHTML property and change it just as you would in Javascript:

    echo $element->innerHTML;
    $elem->innerHTML = 'example';
    

    Source: http://www.keyvan.net/2012/11/php-domdocument-replace-domelement-child-with-html-string/

提交回复
热议问题