我认为的每个结果都应该在同一行。但是,对于每个 class="title",每次遇到 BR 时,结果都会被拆分为另一个数组行。结果应该都在同一行。
[html]
<td class="title">
<a href="http://boguslink">bogus title</a>....<br>
here is some text
</td>
[php]
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$result = $xpath->query('//td[@class="title"]/text()');
foreach ($result as $result_row)
{
echo $i.":".$result_row->nodeValue."<br />";
$i++;
}
[输出]
0: ....
1: here is some text
当输出应该是
[输出]
0: ....here is some text
这是一个错误吗?如果不是,那么如何保持 class="title" 结果不被拆分为单独的行并同时保持我的代码像上面一样快速精简?
编辑:
好吧,不是 /text() 的错误和行为。我可以通过简单地从 xpath 表达式中删除 /text() 来获取该类的所有内部文本。它只是想弄清楚此时如何排除链接文本,所以我只得到“....这里是一些文本”。
所以我需要一个不包括链接文本的表达式。第一次失败的尝试是。
//td[@class="title"][not(a)]
//td[@class="title"][not(self::a)]
//td[@class="title"][not(@href)]