0

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

有谁知道,我该如何解决这个问题?

4

1 回答 1

1

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

$text_a[$i] = $xpath->query('p[@class="a"]', $entry);
$text_b[$i] = $xpath->query('p[@class="b"]', $entry);
于 2013-03-10T18:38:17.687 回答