如何根据HTML标签更新文本

时间:2017-07-08 20:07:56

标签: php html-parsing domdocument

我有一个非常基本的例子:

 <div><span>Lorem ipsum dolor sit amet, elit</span>consectetur adipiscing</div>

我想取代单词&#34; dolor&#34; to&#34; some_another_word&#34;当它在标记<div>...</div>周围时。 &#34; dolor&#34;单词可以放在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标签。我该如何预防?

1 个答案:

答案 0 :(得分:0)

如果正确制作查询,您可以使用 return new byte[0]; 表达式来准确定位您希望操作的内容。以下内容应该说明如何应用这个想法。

XPath