PHP DOMDocument得到的DOMElement对象无法直接获取HTML/XML元素节点的innerHTML和outerHTML,DOMElement继承自DOMDode,只能获取nodeValue或textContent,是去除标签后的纯文本的内容,而不是代码。
想要通过PHP的DOMDocument类来获取元素节点的innerHTML和outerHTML,可以使用以下代码。- <?php
- /*
- * PHP获取DOMDocument DOMNode的innerHTML和outerHTML
- * @author 吴先成 www.wuxiancheng.cn
- */
- $dom = new DOMDocument('1.0','UTF-8');
- $dom->loadHTML('<html><body><div><p>p1</p><p>p2</p></div></body></html>');
- $node = $dom->getElementsByTagName('div')->item(0);
- $outerHTML = $node->ownerDocument->saveHTML($node);
- $innerHTML = '';
- foreach ($node->childNodes as $childNode){
- $innerHTML .= $childNode->ownerDocument->saveHTML($childNode);
- }
- echo '<h2>outerHTML: </h2>';
- echo htmlspecialchars($outerHTML);
- echo '<h2>innerHTML: </h2>';
- echo htmlspecialchars($innerHTML);
- ?>
复制代码 注:outerHTML是指元素本身及其子元素的所有代码,innerHTML是指元素除去其自身以外的代码。
比如对于以下代码中的div元素,它的outerHTML就是以下代码,- <div>
- <p>1</p>
- <p>2</p>
- </div>
复制代码 而innerHTML则是 |
|