对于我的项目,我正在阅读一个使用两次相同ID的外部网站。我无法更改。
我需要第二次显示该ID的内容,但是我的代码仅生成第一个,而看不到第二个。
同样,对$data
的计数结果为1,但结果为2。
我很绝望。有人知道如何访问第二个ID“小时”吗?
<?PHP
$url = 'myurl';
$contents = file_get_contents($url);
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTMLFile($url);
$data = $dom->getElementById("hours");
echo $data->nodeValue."\n";
echo count($data);
?>
答案 0 :(得分:2)
正如@rickdenhaan指出的那样,getElementById
始终返回单个元素,这是第一个具有特定值id
的元素。但是,您可以使用DOMXPath
查找具有给定id
值的所有节点,然后挑选出所需的节点(在此代码中将找到第二个节点):
$url = 'myurl';
$contents = file_get_contents($url);
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTMLFile($url);
$xpath = new DOMXPath($dom);
$count = 0;
foreach ($xpath->query("//*[@id='hours']") as $node) {
if ($count == 1) echo $node->nodeValue;
$count++;
}
@NigelRen在注释中指出,您可以通过直接选择XPath中的第二个输入来进一步简化此操作。
$node = $xpath->query("(//*[@id='hours'])[2]")[0];
echo $node->nodeValue;