我有一个类名为list
的HTML表。
我正在使用以下查询来获取数据。
$elements = $xpath->query("//table[@class='list']/tr/td");
$result = $dom_object->saveHTML($elements->item(0));
var_dump($result);
工作正常。除了它在结果中添加了td。
我的意思是结果看起来像这样
<td>
result data
</td>
有人可以告诉我如何从结果数据中删除td标签吗?
答案 0 :(得分:1)
也许你正在寻找像
这样的东西<?php
$doc = new DOMDocument;
$doc->loadhtml( data() );
$xpath = new DOMXPath($doc);
$elements = $xpath->query("//table[@class='list']/tr/td");
// 1)
$result = (string)$elements->item(0)->nodeValue;
var_dump($result);
// 2)
$frag = $doc->createDocumentFragment();
$node = $elements->item(0)->firstChild;
while( $node ) {
$frag->appendChild( $node->cloneNode(true) );
$node = $node->nextSibling;
}
$result = $doc->saveXML($frag);
var_dump($result);
function data() {
return <<< eoh
<html>
<head><title>...</title></head>
<body>
<table class="list">
<tr><td>result data<br />foo</td></tr>
<tr><td>...</td></tr>
</table>
</body>
</html>
eoh;
}
打印
string(14) "result datafoo"
string(19) "result data<br/>foo"
答案 1 :(得分:0)
如果每个单元格只有一个文本节点(即没有其他标记),则可以选择
//table[@class='list']/tr/td/text()
选择<td/>
内的所有文本节点。如果有标记,但仍然只有<td><em>foo</em></td>
中的单个文本节点,则可以使用
//table[@class='list']/tr/td//text()
如果它包含多个文本节点,您将收到多个结果节点,这些节点不再按表格单元格分组。