php读取html并处理双id外观
对于我的项目,我正在阅读一个使用相同ID两次的外部网站。我不能改变 我需要该ID第二次出现时的内容,但我的代码只是第一次出现时的结果,没有看到第二次。 另外,计数到php读取html并处理双id外观,php,html,parsing,get,Php,Html,Parsing,Get,对于我的项目,我正在阅读一个使用相同ID两次的外部网站。我不能改变 我需要该ID第二次出现时的内容,但我的代码只是第一次出现时的结果,没有看到第二次。 另外,计数到$data的结果是1,而不是2。 我绝望了。有人知道如何访问第二个ID“小时”吗 <?PHP $url = 'myurl'; $contents = file_get_contents($url); $dom = new DOMDocument(); libxml_use_internal_errors(true
$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);
?>
正如@rickdenhaan指出的,总是返回一个元素,该元素是第一个具有特定值
id
的元素。但是,您可以使用查找具有给定id
值的所有节点,然后选择所需的节点(在此代码中,它将找到第二个节点):
正如@NigelRen在评论中指出的,您可以通过直接选择XPath中的第二个输入(即
$node = $xpath->query("(//*[@id='hours'])[2]")[0];
echo $node->nodeValue;
正如@rickdenhaan指出的,总是返回一个元素,该元素是第一个具有特定值
id
的元素。但是,您可以使用查找具有给定id
值的所有节点,然后选择所需的节点(在此代码中,它将找到第二个节点):
正如@NigelRen在评论中指出的,您可以通过直接选择XPath中的第二个输入(即
$node = $xpath->query("(//*[@id='hours'])[2]")[0];
echo $node->nodeValue;
getElementById
始终返回单个节点。PHP的DOMDocument没有提供一种通过其id
属性获取多个节点的方法,但是您可以使用getElementById
编写一个查询,该查询始终返回一个节点。PHP的DOMDocument没有提供通过其id
属性获取多个节点的方法,但是您可能可以使用XPath编写查询,您可以使用XPath稍微缩短它,只获取第二项-$node=$XPath->query((/*[@id='hours'])[2]”[0]代码>和echo$node->nodeValue代码>-浏览一下。@NigelRen谢谢你的参考。这确实让它更简单了,我已经用这个选项更新了答案。您可以通过使用XPath只获取第二项来稍微缩短答案-$node=$XPath->query((/*[@id='hours'])[2]”[0]代码>和echo$node->nodeValue代码>-浏览一下。@NigelRen谢谢你的参考。这确实使它更简单,我已经用这个选项更新了答案。