如何在不使用PHP Simple DOM Parser获取子文本节点的情况下获取节点文本

时间:2017-04-13 22:17:59

标签: php parsing dom

我使用PHP Simple DOM Parser librairy,我有一个小问题.. 我必须解析一个HTML文档,如:



<div>
  here the text I want
  <strong>another text</strong>
 </div>
&#13;
&#13;
&#13;

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

提前致谢,

约旦。

1 个答案:

答案 0 :(得分:0)

您可以获取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];