php xpath获取div的正确内容

时间:2013-03-10 17:20:55

标签: php xpath domdocument

我想解析我的文件“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类的内容。

有人知道,我怎么能解决这个问题?

1 个答案:

答案 0 :(得分:1)

我相信这种情况正在发生,因为您已经陷入了使用需要相对XPath的绝对XPath的常见陷阱。请试试这个:

$text_a[$i] = $xpath->query('p[@class="a"]', $entry);
$text_b[$i] = $xpath->query('p[@class="b"]', $entry);