And*_*ter 8 php dom domdocument
使用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
}
Run Code Online (Sandbox Code Playgroud)
Key*_*van 13
如果HTML字符串可以解析为XML,则可以执行此操作(清除所有子节点的元素后):
$fragment = $doc->createDocumentFragment();
$fragment->appendXML($html_string);
$element->appendChild($fragment);
Run Code Online (Sandbox Code Playgroud)
如果$ 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>';
Run Code Online (Sandbox Code Playgroud)
资料来源:http://www.keyvan.net/2012/11/php-domdocument-replace-domelement-child-with-html-string/
| 归档时间: |
|
| 查看次数: |
7386 次 |
| 最近记录: |