PHP DOMDocument用HTML字符串替换DOMElement子代

前端之家收集整理的这篇文章主要介绍了PHP DOMDocument用HTML字符串替换DOMElement子代前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用 PHP我试图从WYSIWYG编辑器传递一个HTML字符串,并用新的HTML替换预加载的HTML文档中的元素的子元素.

到目前为止,我正在加载文档,标识我想要通过ID更改的元素,但是将HTML转换为可放置在DOMElement中的内容的过程正在逃避我.

libxml_use_internal_errors(true);

$doc = new DOMDocument();
$doc->loadHTML($html);

$element = $doc->getElementById($item_id);
if(isset($element)){
    //Remove the old children from the element
    while($element->childNodes->length){
        $element->removeChild($element->firstChild);
    }

    //Need to build the new children from $html_string and append to $element
}
如果HTML字符串可以解析为XML,则可以执行此操作(清除所有子节点的元素后):
$fragment = $doc->createDocumentFragment();
$fragment->appendXML($html_string);
$element->appendChild($fragment);

如果$html_string无法解析为XML,则会失败.如果是这样,你将不得不使用loadHTML(),它不那么严格 – 但它会在片段周围添加你必须剥离的元素.

PHP不同,Javascript具有innerHTML属性,允许您非常轻松地执行此操作.我需要类似于项目的东西,所以我扩展了PHP的DOMElement以包含类似Javascript的innerHTML访问.

有了它,您可以访问innerHTML属性并像在Javascript中一样进行更改:

echo $element->innerHTML;
$elem->innerHTML = '<a href="http://example.org">example</a>';

资料来源:http://www.keyvan.net/2012/11/php-domdocument-replace-domelement-child-with-html-string/

猜你在找的PHP相关文章