如何在 xpath 中的两个 br 标签之间获取?
How to get between two br tags in xpath?
我有一个 table 像这样的 td
<td>
<span> Washington US <br>98101 Times Square</span>
</td>
我可以获取页面中的所有元素,但我需要分别获取这两个值。如果那不可能,我想以某种方式获得 98101 Times Square
我试过做类似 string(//tr[3]//td[2])/
的事情,但我得到的只是将两个文本连接在一起。
您可以 select span
元素中的文本子节点 span/text()
因此假设您发布的路径 selects td
包含 span
你想要 //tr[3]//td[2]/span/text()
.
这是一个示例:
$html = <<<EOD
<html>
<body>
<table>
<tr>
<td>1</td>
</tr>
<tr>
<td>2</td>
</tr>
<tr>
<td>3,1</td>
<td>
<span> Washington US <br>98101 Times Square</span>
</td>
</tr>
</body>
</html>
EOD;
$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
$textNodes = $xpath->query('//tr[3]//td[2]/span/text()');
foreach ($textNodes as $text) {
echo $text->textContent . "\n";
}
产出
Washington US
98101 Times Square
尝试
td/span/node()[1]
和
td/span/node()[3]
或
td/span/text()[1]
td/span/text()[2]
我有一个 table 像这样的 td
<td>
<span> Washington US <br>98101 Times Square</span>
</td>
我可以获取页面中的所有元素,但我需要分别获取这两个值。如果那不可能,我想以某种方式获得 98101 Times Square
我试过做类似 string(//tr[3]//td[2])/
的事情,但我得到的只是将两个文本连接在一起。
您可以 select span
元素中的文本子节点 span/text()
因此假设您发布的路径 selects td
包含 span
你想要 //tr[3]//td[2]/span/text()
.
这是一个示例:
$html = <<<EOD
<html>
<body>
<table>
<tr>
<td>1</td>
</tr>
<tr>
<td>2</td>
</tr>
<tr>
<td>3,1</td>
<td>
<span> Washington US <br>98101 Times Square</span>
</td>
</tr>
</body>
</html>
EOD;
$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
$textNodes = $xpath->query('//tr[3]//td[2]/span/text()');
foreach ($textNodes as $text) {
echo $text->textContent . "\n";
}
产出
Washington US
98101 Times Square
尝试
td/span/node()[1]
和
td/span/node()[3]
或
td/span/text()[1]
td/span/text()[2]