Как я могу извлечь строку «текст» из этой разметки с помощью 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