使用
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/