我正在使用PHP DOMDocument和DomXPath解析第三方HTML页面。 我使用以下代码:
$dom = new DOMDocument();
$html = file_get_contents($url);
$dom->loadHTML('<?xml encoding="UTF-8">' . $html);
$dom->encoding = "UTF-8";
$finder = new DomXPath($dom);
现在有几个元素使用相同的类,但我想定位使用仅给定类的元素,例如:
<table class="tbl"></table>
<table class="tbl red"></table>
<table class="tbl large blue"></table>
我使用以下选择器:
$classname = "tbl";
$nodes = $finder->query("//*[contains(@class, '$classname')]");
当然,取出上面给出的所有三个表格。有没有一种简单的方法来获得第一个? 感谢
答案 0 :(得分:1)
是的,有办法。
请注意,使用XPath查询,您可以通过以下方式访问所需的节点:
$nodes->item(0);
要仅选择第一个节点,您必须以这种方式修改模式:
$nodes = $finder->query("(//*[contains(@class, '$classname')])[1]");
但是要访问所需的节点,无论如何都需要使用这种语法:
$nodes->item(0);