如何使用 PHP 简单 DOM 解析器获取节点的文本而不获取子节点的文本



我正在使用PHP Simple DOM Parser库,我有一个小问题。我必须解析一个HTML文档,如下所示:

<div>
  here the text I want
  <strong>another text</strong>
 </div>

我想知道是否可以只从div 标签中获取文本(而不是从强标签中获取文本(。是否可以自动执行此操作(无需指定文本的位置(?

提前感谢,

约旦。

您可以获取div元素的子元素,并查找文本节点(这将排除strong和其他元素(:

$html = "<div>
  here the text I want
  <strong>another text</strong>
 </div>";
$dom = new DOMDocument;
$dom->loadHTML($html);
$div = $dom->getElementsByTagName('div')[0];
$text = "";
foreach($div->childNodes as $node) {
    if ($node->nodeType == XML_TEXT_NODE) $text .= $node->nodeValue;
}
echo trim($text);

如果根元素并不总是div,但可以是任何元素,则将赋值更改为$div,如下所示:

$div = $dom->getElementsByTagName('body')[0]->childNodes[0]; 

最新更新