如何将HTML元素的文本更改为PHP中的另一个元素?

时间:2019-02-08 09:36:50

标签: php html dom domdocument

正如标题所述,我想使用PHP将DOM元素的textContent更改为span。像这样:

<div class="dummy">Here is my content.</div>

对此:

<div class="dummy"><span class="newSpan"></span></div>

我试图将内容设置为空

$sourceDOMElement->nodeValue = ""; //OR
$sourceDOMElement->textContent = "";

但是由于某种原因,任何一个都不起作用。此后,我想向新元素添加一个新的子元素。

我该如何进行这项工作? 预先感谢!

编辑:Here's my whole code, where I have to do this.

2 个答案:

答案 0 :(得分:1)

如果要设置这样的元素的文本内容,则可以设置nodeValue属性

$el = $dom->getElementById('foo');
$el->nodeValue = 'hello world';

这会自动转义<和>,因此您不能插入这样的HTML。

因此,您可以使用:

DOMDocument::createDocumentFragment:

$frag = $dom->createDocumentFragment();
$frag->appendXML('<h1>foo</h1>');
$el->appendChild($frag);

答案 1 :(得分:1)

尝试

$content = '<div class="dummy">aaaaaaa</div>';
$DOM_inner_HTML = new DOMDocument();
$DOM_inner_HTML->loadHTML( mb_convert_encoding( $content, 'HTML-ENTITIES', 'UTF-8' ) );
$content_node = $DOM_inner_HTML->getElementsByTagName('div')->item(0);
$content_node->textContent  = '<span class="newSpan"></span>';