У меня есть переменная $content
содержащая кусок кода HTML:
<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>
Теперь я хочу значения <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 ) ( )