2017-04-13 112 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