PHP DOM: получить NodeValue, исключая дочерние узлы

У меня есть переменная $content содержащая кусок кода HTML:

Теперь я хочу значения <b> исключая значения <span> используя PHP DOM. Как это может быть сделано? Фрагмент кода будет полезен.

До сих пор я пробовал это:

 $dom = new domDocument; @$dom->loadHTML($content); $contents_i_want = $dom->getElementsByTagName('b'); foreach($contents_i_want as $content_i_want){ $filtered_content = $content_i_want->nodeValue; echo $filtered_content; } 

Надеюсь, это поможет вам.

Попробуйте этот фрагмент кода здесь

 <?php ini_set('display_errors', 1); $string='<html><body><b>AMZN 466.00 ( 15743 ) ( <span class=\'red\'> -1 </span>) MSFT 290.00 ( 37296 ) ( <span class=\'red\'> -2 </span>) TWTR 4,000.00 ( 20 ) ( <span class=\'\'> 0 </span>)</b></body></html>'; $dom = new DOMDocument(); $dom->loadHTML($string); $dom->getElementsByTagName("b"); $xpath= new DOMXPath($dom); $result=$xpath->query("//b/span");//here we are querying domdocument to find span which is inside b. $nodesToRemove=array();//here we are maintaining an array of nodes which we want to remove foreach($result as $node) { $node->parentNode->removeChild($node);//removing nodes from its parent } echo $dom->getElementsByTagName("b")->item(0)->textContent;//displaying content after removing nodes. 

Вывод:

 AMZN 466.00 ( 15743 ) ( ) MSFT 290.00 ( 37296 ) ( ) TWTR 4,000.00 ( 20 ) ( )