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
domxpath-如何仅获取父标记而不是子标记的内容_Dom_Xpath - Fatal编程技术网

domxpath-如何仅获取父标记而不是子标记的内容

domxpath-如何仅获取父标记而不是子标记的内容,dom,xpath,Dom,Xpath,一、 我使用domxpath查询仅获取父标记的内容,即td[class='s'],而不包括嵌套在该td中的div内容,如下代码所示 <?php $second_trim='<td class="s" style="line-height:18px;">THIS TEXT IS REQUIRED and <div id="a" style="display:none;background-color:black;border:1px solid #ddd;p

一、 我使用domxpath查询仅获取父标记的内容,即td[class='s'],而不包括嵌套在该td中的div内容,如下代码所示

<?php
$second_trim='<td class="s" style="line-height:18px;">THIS TEXT IS REQUIRED and <div id="a"         style="display:none;background-color:black;border:1px solid #ddd;padding:5px;color:black;">THIS TEXT     IS  NOT REQUIRED </div></td>';
$dom = new DOMDocument();
$doc->validateOnParse = true;
@$dom->loadHTML($second_trim);
libxml_clear_errors();
$xpath = new DOMXpath($dom);

$b = $xpath->query('//td[@class="s"]');
    echo "<p style='font-size:14px;color:red;'><b style='font-size:18px;color:gray;'>cONTENT :-        </b>".$b->item(0)->nodeValue."</p>"; 
?> 
那么,如何删除div标签的内容并只获取td的内容呢

编辑

如果您只对直接文本内容感兴趣,请修改xpath查询:

$b = $xpath->query('//td[@class="s"]/text()');
echo '<p style="font-size:14px;color:red;">'
        .'<b style="font-size:18px;color:gray;">cONTENT :-        </b>'
        .$b->item(0)->nodeValue
    .'</p>';
现在,结果非常具体,具体到示例中: 如果存在多个直接文本节点,则不会显示该节点。为此,foreach通过DOMNodeList$b并回显每个选定的节点值