Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类DOMNodeList的对象无法转换为字符串_Dom_Xpath - Fatal编程技术网

类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

我得到了上面的错误,并试图打印出该对象,以查看如何访问其中的数据,但它只回显了DOMNodeList对象()


我使用的是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"