在PHP中使用QueryPath从HTML同级元素检索文本

在PHP中使用QueryPath从HTML同级元素检索文本,php,html,querypath,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><d

我使用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>

标题1数据1
标题2数据2
我想使用QueryPath搜索包含特定文本字符串的类“1”的DIV(“Heading2”),然后直接检索它旁边的类2的兄弟DIV中的任何文本。(在本例中,它将检索“Data2”)


QueryPath中是否有内置功能,允许我根据元素包含的文本导航到该元素?如果是这样的话,一旦我找到了那个元素,我怎么才能得到它的下一个同级元素的内容文本呢?

我的自然想法是使用
not()
函数。例如:

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

我的自然想法是使用
not()
函数。例如:

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

在CSS 3中使用同级运算符:

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

上面得到的
的标题为
Heading1
,然后得到类为
2

的相邻同级,使用CSS 3中的同级运算符:

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

上面得到的
的标题是
Heading1
,然后得到类是
2

的相邻同级,只是为了让您知道,html类可能不是以数字开头的。另外,我建议尝试用另一种方式设置它。只是想让您知道,html类可能不会以数字开头。此外,我建议尝试以另一种方式设置。