为了说明我的问题,我将其简化为以下内容:
<?php
$html = "
<!doctype html>
<html>
<head>
<title>Test Title</title>
</head>
<body>
<p>Test Body</p>
</body>
</html>
";
$dom = new DOMDocument($html);
$xPath = new DOMXPath($dom);
$result = $xPath->query("//html/head/title");
var_dump($result);
$title = $result->item(0);
var_dump($title);
?>
我正在尝试提取标题文本。运行这个,返回的节点列表长度为 0,所以显然第二次检查也失败了:
C:'xampp'htdocs'mySite'partials'testPage.php:17:
object(DOMNodeList)[3]
public 'length' => int 0
C:'xampp'htdocs'mySite'partials'testPage.php:20:null
这是一个如此简单的例子,我要么严重误解了某些东西,要么我需要某种预配置(但我还没有看到在示例中是必要的)。
正如@TechNyquist所指出的,你不会以这种方式构建 DOMDocument。
尝试:
$dom = new DOMDocument();
$dom->loadHTML($html);
我试过,
$dom = new DOMDocument();
$dom->loadHTML($html);
$xPath = new DOMXPath($dom);
$result = $xPath->query("//html/head/title");
// var_dump($result);
$title = $result->item(0);
var_dump($title->textContent);
并如预期的那样得到
string(10) "Test Title"