2011-06-19 5 views
24

PHP DOMを使用してこのマークアップから「text」という文字列を抽出するにはどうすればよいですか?PHP DOMでノードのテキストを取得する

<div><span>notthis</span>text</div> 

$div->nodeValue限り、あなたがDOMに影響を与えることができるよう、あなたはspanことを取り除くことができ、 "notthis"

答えて

18

が含まれています。

$span = $div->getElementsByTagName('span')->item(0); 
$div->removeChild($span); 

$nodeValue = $div->nodeValue; 

また、$divのテキストノードにアクセスするだけです。

foreach($div->childNodes as $node) { 

    if ($node->nodeType != XML_TEXT_NODE) { 
     continue; 
    } 
    $nodeValue = $node; 
} 

あなたはより多くのテキストノードで終わる場合のみは$nodeValueの、次のことができbreak後の最初の割り当て最初にしたいです。

26

あなたは、XPathを使用して直接DOMTextノードにアクセスすることができます。

$xpath = new DOMXPath($dom_document); 
$node = $xpath->query('//div/text()')->item(0); 
echo $node->textContent; // text 
関連する問題