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;
}
テキストノードが増えて最初のテキストノードだけが必要な場合は、$nodeValue
の最初の割り当ての後にbreak
を実行できます。
XPathを使用してDOMText
ノードに直接アクセスできます。
$xpath = new DOMXPath($dom_document);
$node = $xpath->query('//div/text()')->item(0);
echo $node->textContent; // text