考慮下面的代碼:爲什麼這個DOMXpath查詢合併了兄弟節點值?
$html = "<h1>foo</h1><h2>bar</h2>";
$document = new DOMDocument();
$document->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$xpath = new DOMXPath($document);
$h1Nodes = $xpath->query('//h1');
foreach ($h1Nodes as $h1Node) {
var_dump($h1Node->nodeValue);
}
H1標籤只包含文本節點與文本「富」。文本「欄」位於兄弟標題節點(h2)中。我期望輸出是'foo'。
但是,輸出是'foobar'。
爲什麼?
'LIBXML_HTML_NOIMPLIED'用於關閉隱含的html/body ...元素的自動添加。所以,如果您添加'LIBXML_HTML_NOIMPLIED',那麼您必須在您的html中添加''標籤。如果您刪除了'LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD'然後你的輸出如預期。 –