【问题标题】:How to change a HTML element's text to another element in PHP?如何将 HTML 元素的文本更改为 PHP 中的另一个元素?
【发布时间】:2019-07-02 12:31:45
【问题描述】:

正如标题所说,我想使用 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.

【问题讨论】:

    标签: php html dom domdocument


    【解决方案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>';
    

    【讨论】:

    • 我试试这个,它是有效的。如果您没有看到标签是因为标签在浏览器中呈现
    • 我基本上也是这样做的,但我使用 $dom->loadHTMLFile($html);因为我必须加载一个文件,但它不起作用。会不会有问题?
    • 尝试使用 file_get_content 并再次测试!
    • 将我的整个功能添加到我的问题中。你能看一下吗?
    【解决方案2】:

    如果你想像这样设置元素的文本内容,你可以设置 nodeValue 属性

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

    这会自动转义,所以你不能像这样插入HTML。

    这样做你可以去:

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

    【讨论】:

    • 谢谢,我已经在另一个问题中看到了这个答案,但它不起作用。
    猜你喜欢
    • 2013-04-03
    • 2019-06-04
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多