PHP无法从特定的DOM元素中检索值[重复]

Posted

技术标签:

【中文标题】PHP无法从特定的DOM元素中检索值[重复]【英文标题】:PHP Cannot retrieve value from a specific DOM element [duplicate] 【发布时间】:2014-08-19 23:49:21 【问题描述】:

我正在尝试从this 页面中的 p 元素中检索内容。如您所见,在源代码中有一段包含我想要的内容:

<p id="qb"><!--
QBlastInfoBegin
    Status=READY
QBlastInfoEnd
--></p>

其实我想取 Status 的值。 这是我的 php 代码。

@$dom->loadhtml($ncbi->ncbi_request($params));
$XPath = new DOMXpath($dom);
$nodes = $XPath->query('//p[@id="qb"]');
$node  = $nodes->item(0)->nodeValue;
var_dump($node))

返回

["nodeValue"]=> 字符串(0) ""

有什么想法吗?

谢谢!

【问题讨论】:

【参考方案1】:

似乎要获取评论值,您需要使用//comment() 我对 XPath 不太熟悉,所以不太确定确切的语法

来源:https://***.com/a/7548089/723139/https://***.com/a/1987555/723139

更新:使用工作代码

<?php

$data = file_get_contents('http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?RID=UY5PPBRH014&CMD=Get');
$dom = new DOMDocument();
@$dom->loadHTML($data);
$XPath = new DOMXpath($dom);
$nodes = $XPath->query('//p[@id="qb"]/comment()');
foreach ($nodes as $comment)

    var_dump($comment->textContent);

【讨论】:

如果您想更新答案,这将起作用:$nodes = $XPath-&gt;query('//p[@id="qb"]/comment()');【参考方案2】:

我检查了该网站,似乎您在里面的评论之后,您需要在您的 xpath 查询中添加comment()。考虑这个例子:

$contents = file_get_contents('http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?RID=UY5PPBRH014&CMD=Get');
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($contents);
libxml_clear_errors();
$xpath = new DOMXpath($dom);

$comment = $xpath->query('//p[@id="qb"]/comment()')->item(0)->nodeValue;
echo '<pre>';
print_r($comment);

输出:

QBlastInfoBegin
    Status=READY
QBlastInfoEnd

【讨论】:

以上是关于PHP无法从特定的DOM元素中检索值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP DOM 访问样式属性

使用时间通过php从数据库中检索特定内容

使用时间通过php从数据库中检索特定内容

jquery 想要获取 DOM 中的下一个输入元素

DOM - 选择 HTML 元素的特定属性 [重复]

如何避免为页面加载和 DOM 更改重复此特定代码?