我将使用简单的方法。你已经有了:
$dom = new DOMDocument;
$dom->loadHTML($webtext['content']);
$main = $dom->getElementById('inter');
$dom->saveHTML();
现在,DOMDocument::getElementById()
返回一个 DOMElement
extendsDOMNode
具有public string
nodeValue
. 由于您没有指定除文本之外的任何内容div
,因此我假设您想要任何可能以纯文本形式存储在其中的内容。为此,我们将删除$dom->saveHTML();
,并将其替换为:
$divString = $main->nodeValue;
这样,$divString
将包含//SOME THINGS IN MY DIV
,根据您的示例,它是所需的输出。
但是,如果您想要其中的 HTML 而不仅仅是字符串表示形式 - 将其替换为以下内容:
$divString = "";
foreach($main->childNodes as $c)
$divString .= $c->ownerDocument->saveXML($c);
这样做是利用继承的DOMNode::childNodes
,其中包含一个DOMNodeList
每个包含其自己的 DOMNode(供参考,见上文),我们遍历每个获取ownerDocument
which is aDOMDocument
并调用该DOMDocument::saveXML()
函数。我们将当前$c
节点传递给函数的原因是为了防止输出整个有效文档,并且因为这ownerDocument
是我们正在循环的内容 - 我们需要一次获取一个子节点,并且不留下任何子节点。(抱歉,来晚了,忍不住了。)
现在,在任何一种选择之后,您都可以随心所欲$divString
。我希望这有助于向您解释该过程,并希望您能够更好地理解正在发生的事情,而不是仅仅因为代码有效而死记硬背。^^