如何将 HTML 元素的文本更改为 PHP 中的另一个元素?
How to change a HTML element's text to another element in PHP?
正如标题所说,我想使用 PHP 将 DOM 元素的 textContent 更改为一个跨度。像这样:
<div class="dummy">Here is my content.</div>
对此:
<div class="dummy"><span class="newSpan"></span></div>
我试过把内容设置为空就好
$sourceDOMElement->nodeValue = ""; //OR
$sourceDOMElement->textContent = "";
但是 none 出于某种原因起作用了。在此之后,我想将一个新的 child 附加到具有我要插入的新跨度的元素。
我怎样才能完成这项工作?
提前致谢!
如果你想像这样设置一个元素的文本内容,你可以设置节点值属性
$el = $dom->getElementById('foo');
$el->nodeValue = 'hello world';
这会自动转义 < 和 >,因此您不能像这样插入 HTML。
所以你可以这样做:
DOMDocument::createDocumentFragment:
$frag = $dom->createDocumentFragment();
$frag->appendXML('<h1>foo</h1>');
$el->appendChild($frag);
试试这个
$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>';
正如标题所说,我想使用 PHP 将 DOM 元素的 textContent 更改为一个跨度。像这样:
<div class="dummy">Here is my content.</div>
对此:
<div class="dummy"><span class="newSpan"></span></div>
我试过把内容设置为空就好
$sourceDOMElement->nodeValue = ""; //OR
$sourceDOMElement->textContent = "";
但是 none 出于某种原因起作用了。在此之后,我想将一个新的 child 附加到具有我要插入的新跨度的元素。
我怎样才能完成这项工作? 提前致谢!
如果你想像这样设置一个元素的文本内容,你可以设置节点值属性
$el = $dom->getElementById('foo');
$el->nodeValue = 'hello world';
这会自动转义 < 和 >,因此您不能像这样插入 HTML。
所以你可以这样做:
DOMDocument::createDocumentFragment:
$frag = $dom->createDocumentFragment();
$frag->appendXML('<h1>foo</h1>');
$el->appendChild($frag);
试试这个
$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>';