<?php
$response =
'<style><div id="subhead"></div></style>';
//echo $response;
$doc = new DOMDocument();
$doc->loadHTML($response);
$finder = new DomXPath($doc);
$term_select = $finder->query('//div[@id="subhead"]');
var_dump($term_select->item(0));
?>
var_dump得到NULL,我在第8行也得到了这个警告:
Warning: DOMDocument::loadHTML(): Unexpected end tag : div in Entity, line: 1 on line 8
请注意,这不是我的HTML(我正在抓取),因此无法更改HTML。
答案 0 :(得分:2)
loadHTML()
期望在字符串中找到HTML,但这不是有效的HTML,因此字符串无法正确加载。 XPath不会有<div>
个元素。请改为loadXML()
。
答案 1 :(得分:2)
问题是您不能使用DIV元素而不是STYLE元素,所以当您使用loadHTML
时,它无法验证HTML。如果您执行$doc->saveHTML();
,您很快就会意识到它将<div id="subhead">
包裹在CDATA
中。
要解决此问题,请改用loadXML()
。
$doc->loadXml($response);