2017-04-13 109 views
0

我正在使用PHP简单DOM解析器库,并且我有一个小问题。 我必须解析一个HTML文档,它类似于:如何使用PHP简单DOM解析器获取节点的文本而不使用儿童文本节点

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

我想知道是否有可能只能从div标签(而不是从强标记文本)的文本。这可能会自动做到这一点(没有指定文本的位置)?

在此先感谢,

约旦。

回答

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]; 
+0

谢谢您的回答!我忘了告诉你,根节点不是必需的div标签,你有这个问题的解决方案?在此先感谢 – PUBJ

+0

看到我刚刚添加到我的答案的最后一段。 – trincot

+0

谢谢你的回答! – PUBJ