我想解析我的文件“file.html”:
<div class="result">
<p class="a">asdf</p>
</div>
<div class="result">
<p class="a">hjkl</p>
<p class="b">lkjh</p>
</div>
使用PHP代码:
<?php
$dom = new DOMDocument();
$dom->loadHTMLFile(file.html);
$xpath = new DOMXPath($dom);
$entries = $xpath->query('//div[@class="result"]');
$i = 0;
foreach($entries as $entry) {
$text_a[$i] = $xpath->query('//p[@class="a"]', $entry);
$text_b[$i] = $xpath->query('//p[@class="b"]', $entry);
$i++;
}
?>
我想为1.结果只有一个text_a,在第二个结果是text_a和text_b。
但不幸的是,我在第一个结果中得到了a类和b类的内容,而在第二个结果中只得到了a类的内容。
有人知道,我怎么能解决这个问题?
答案 0 :(得分:1)
我相信这种情况正在发生,因为您已经陷入了使用需要相对XPath的绝对XPath的常见陷阱。请试试这个:
$text_a[$i] = $xpath->query('p[@class="a"]', $entry);
$text_b[$i] = $xpath->query('p[@class="b"]', $entry);