【发布时间】:2023-03-23 23:54:01
【问题描述】:
我有一个非常基本的例子:
<div><span>Lorem ipsum dolor sit amet, elit</span>consectetur adipiscing</div>
当标签的<div>...</div> 出现时,我想将单词“dolor”替换为“some_another_word”。 “dolor”字可以放在div的里面和外面
我当前的代码是下一个:
$html = '<div><span>Lorem ipsum dolor sit amet, elit</span>consectetur adipiscing</div>';
$docs = new \DOMDocument();
$docs->loadHTML( $html );
$els = $docs->getElementsByTagName('*');
foreach ( $els as $node ) {
if ( 'div' === $node->nodeName ) {
$node->textContent = str_replace('dolor', 'some_another_word', $node->textContent);
}
}
var_dump( $docs->saveHTML() );
我的代码的结果是:
<html><body><div>Lorem ipsum some_another_word sit amet, elit consectetur adipiscing</div></body></html>
我丢失了我需要的span 标签。如何预防?
【问题讨论】:
-
span是div的子节点。您必须检查您的 div 是否没有子节点 - 然后将其替换为nodevalue,否则 - 更深入。 -
@u_mulder 提交您的评论作为答案。
-
No) 这真的不是答案,答案应该包含一些代码,但我很懒。
标签: php html-parsing domdocument