Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用xpath查询html表-从结果中删除td_Php_Xpath - Fatal编程技术网

Php 使用xpath查询html表-从结果中删除td

Php 使用xpath查询html表-从结果中删除td,php,xpath,Php,Xpath,我有一个类名为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> 结果数据 有人能告诉我如何从

我有一个类名为
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标记吗?

也许您正在寻找类似的内容

<?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;
}

也许您正在寻找类似

<?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;
}

如果每个单元格只有一个文本节点(即没有其他标记),则可以选择

//表[@class='list']/tr/td/text()
它选择
中的所有文本节点。如果有标记,但仍然只有一个文本节点,如
foo
,则可以使用

//表[@class='list']/tr/td//text()

如果它包含多个文本节点,您将收到多个不再按表格单元格分组的结果节点。

如果每个单元格只有一个文本节点(即没有其他标记),您可以选择

//表[@class='list']/tr/td/text()
它选择
中的所有文本节点。如果有标记,但仍然只有一个文本节点,如
foo
,则可以使用

//表[@class='list']/tr/td//text()
如果它包含多个文本节点,您将收到多个不再按表格单元格分组的结果节点