使用PHP中的QueryPath从HTML兄弟元素中检索文本

时间:2011-03-24 10:23:31

标签: php html querypath

我正在使用PHP和QueryPath库从一些旧的HTML文件中提取数据。当我需要的元素具有唯一的css3 ID或类时,提取很容易,但情况并非总是如此。我有一些文件包含以下类型的数据:

<div id="dataDiv">
<div class="1">Heading1</div><div class="2" title="">Data1</div>
<div class="1">Heading2</div><div class="2" title="">Data2</div>
</div>

我想使用QueryPath搜索包含某个文本字符串的类“1”的DIV(例如“Heading2”),然后直接在它旁边的类2的兄弟div中检索任何文本。 (在这种情况下,它将检索“Data2”)。

QueryPath中是否内置了一些功能,允许我根据它包含的文本导航到一个元素?如果是这样,一旦找到该元素,我怎样才能获得其下一个兄弟元素的内容文本?

3 个答案:

答案 0 :(得分:1)

我的自然想法是not()功能。一个例子:

$qp2 = qp($tb)->find('table tr')->not('table tr table tr'); 

答案 1 :(得分:0)

您可能只需使用QueryPath::get(n-1)获取第n个对象,请检查this。但是,您可能希望go further...

答案 2 :(得分:0)

在CSS 3中使用兄弟运算符:

qp($html, 'div.1:contains("Heading1") + div.2')->text();

以上获取标题为<div class="1">的{​​{1}},然后获取其类为Heading1的相邻兄弟。