在PHP DOM中获取节点的文本

bgc*_*ode 27 html php xml dom

如何使用PHP DOM从此标记中提取字符串"text"?

<div><span>notthis</span>text</div>
Run Code Online (Sandbox Code Playgroud)

$div->nodeValue 包括"notthis"

net*_*der 31

您可以DOMText使用XPath直接访问节点:

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


ale*_*lex 22

只要你可以影响DOM,你就可以删除它span.

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

$nodeValue = $div->nodeValue;
Run Code Online (Sandbox Code Playgroud)

或者,只需访问文本节点$div.

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

    if ($node->nodeType != XML_TEXT_NODE) {
        continue;
    }
    $nodeValue = $node;
}
Run Code Online (Sandbox Code Playgroud)

如果你最终得到更多的文本节点,只想要第一个,你可以break在第一次分配之后$nodeValue.