用語集のツールチップの実装を簡素化するために、dom オブジェクトを使用しようとしています。私がする必要があるのは、段落内のテキスト要素を置き換えることですが、段落に埋め込まれている可能性のあるアンカータグでは置き換えません。
$html = '<p>Replace this tag not this <a href="#">tag</a></p>';
$document = new DOMDocument();
$document->loadHTML($html);
$document->preserveWhiteSpace = false;
$document->validateOnParse = true;
$nodes = $document->getElementByTagName("p");
foreach ($nodes as $node) {
$node->nodeValue = str_replace("tag","element",$node->nodeValue);
}
echo $document->saveHTML();
私は得る:
'...<p>Replace this element not this element</p>...'
私が欲しい:
'...<p>Replace this element not this <a href="#">tag</a></p>...'
親ノードのテキストのみが変更され、子ノード (タグ) が変更されないように実装するにはどうすればよいですか?