代码示例:
$html = <<<END
<tr>
<td>Text-1</td>
</tr>
<tr>
<td>Blah 1</td>
<td>Blah 2</td>
<td>Blah 3</td>
<td>Blah 4</td>
</tr>
<tr>
<td>Text-2</td>
</tr>
<tr>
<td>Blah 1</td>
<td>Blah 2</td>
<td>Blah 3</td>
<td>Blah 4</td>
</tr>
END;
$dom = new DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->loadhtml($html);
$xpath = new DOMXPath($dom);
// Grab the text
$nodes = $xpath->query('//td[contains(text(), "Text-2")]|//td[contains(text(), "Blah 1")]/following-sibling::td');
echo $nodes->item(0)->textContent;
我尝试在Text-2下抓取Bla2,问题是在Text-1下抓取Bla2
发布于 2015-02-22 20:17:09
首先,找到具有<td>子级和"Text-2"的<tr>,然后向下遍历下一个同级,直到找到一个具有"Blah 1"的<td>。答案是它的下一个兄弟。
//tr[contains(td/text(), "Text-2")]/following-sibling::tr/td[contains(text(), "Blah 1")]/following-sibling::td'发布于 2015-02-23 01:41:27
找到了答案:
//*[text()='Text-2']/following::td[text()='Blah 1']/following-sibling::td
https://stackoverflow.com/questions/28648915
复制相似问题