Получение текста узла в PHP DOM

Как я могу извлечь строку «текст» из этой разметки с помощью PHP DOM?

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

$div->nodeValue включает в себя "notthis"

Пока вы можете повлиять на DOM, вы можете удалить этот span .

 $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; } 

Если вы закончите с большим количеством текстовых узлов и хотите только первого, вы можете break после первого присваивания $nodeValue .

Вы можете напрямую получить доступ DOMText узлу DOMText с помощью XPath:

 $xpath = new DOMXPath($dom_document); $node = $xpath->query('//div/text()')->item(0); echo $node->textContent; // text