类DOMNodeList的对象无法转换为字符串
我得到了上面的错误,并试图打印出该对象,以查看如何访问其中的数据,但它只回显了DOMNodeList对象()类DOMNodeList的对象无法转换为字符串,dom,xpath,Dom,Xpath,我得到了上面的错误,并试图打印出该对象,以查看如何访问其中的数据,但它只回显了DOMNodeList对象() 我使用的是Wordpress,因此解释了wp_remote_fopen函数。我试图从$url中回显第一个表是的,DOMXpath::query返回总是一个DOMNodeList,这是一个需要处理的奇怪对象。基本上,您必须对其进行迭代,或者仅使用item()获取单个项: // There's actually something in the list if($result->len
我使用的是Wordpress,因此解释了wp_remote_fopen函数。我试图从$url中回显第一个表是的,
DOMXpath::query
返回总是一个DOMNodeList
,这是一个需要处理的奇怪对象。基本上,您必须对其进行迭代,或者仅使用item()
获取单个项:
// There's actually something in the list
if($result->length > 0) {
$node = $result->item(0);
echo "{$node->nodeName} - {$node->nodeValue}";
}
else {
// empty result set
}
或者,您可以循环使用以下值:
foreach($result as $node) {
echo "{$node->nodeName} - {$node->nodeValue}";
// or you can just print out the the XML:
// $dom->saveXML($node);
}
Xpath以1而不是0开始索引:
/html/body/table[1]
现在,这取决于您是要保存匹配节点的HTML,还是要保存节点的文本内容
$html = <<<'HTML'
<html>
<body>
<p>Hello World</p>
</body>
</html>
HTML;
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
// iterate all matched nodes and save them as HTML to a buffer
$result = '';
foreach ($xpath->evaluate('/html/body/p[1]') as $p) {
$result .= $dom->saveHtml($p);
}
var_dump($result);
// cast the first matched node to a string
var_dump(
$xpath->evaluate('string(/html/body/p[1])')
);
$html=saveHtml($p);
}
var_dump($结果);
//将第一个匹配的节点强制转换为字符串
瓦鲁垃圾场(
$xpath->evaluate('string(/html/body/p[1]))
);
演示:
string(18)”helloworld“
字符串(11)“你好,世界”
谢谢,这真的帮助了我的理解!
$html = <<<'HTML'
<html>
<body>
<p>Hello World</p>
</body>
</html>
HTML;
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
// iterate all matched nodes and save them as HTML to a buffer
$result = '';
foreach ($xpath->evaluate('/html/body/p[1]') as $p) {
$result .= $dom->saveHtml($p);
}
var_dump($result);
// cast the first matched node to a string
var_dump(
$xpath->evaluate('string(/html/body/p[1])')
);
string(18) "<p>Hello World</p>"
string(11) "Hello World"