PHP:通过 ID 将 html 内容附加(添加)到现有元素

Posted

技术标签:

【中文标题】PHP:通过 ID 将 html 内容附加(添加)到现有元素【英文标题】:PHP: Appending (adding) html content to exsisting element by ID 【发布时间】:2015-11-18 12:23:06 【问题描述】:

我需要使用 php 按 ID 搜索元素,然后将 html 内容附加到它。看起来很简单,但我是 php 新手,找不到合适的函数来执行此操作。

$html = file_get_contents('http://example.com');
$doc = new DOMDocument(); 
libxml_use_internal_errors(true);
$doc->loadHTML($html);
$descBox = $doc->getElementById('element1');

我只是不知道下一步该怎么做。任何帮助将不胜感激。

【问题讨论】:

你试过了吗,php.net/manual/en/domnode.appendchild.php?不知道$html 是什么,或者你想添加什么很难举个例子。 【参考方案1】:

就像 chris 在他的评论中提到的,尝试使用 DOMNode::appendChild,这将允许您将子元素添加到您选择的元素和 DOMDocument::createElement 以实际创建元素,如下所示:

$html = file_get_contents('http://example.com');
libxml_use_internal_errors(true);
$doc = new DOMDocument(); 
$doc->loadHTML($html);
//get the element you want to append to
$descBox = $doc->getElementById('element1');
//create the element to append to #element1
$appended = $doc->createElement('div', 'This is a test element.');
//actually append the element
$descBox->appendChild($appended);

或者,如果您已经有一个要附加的 HTML 字符串,您可以 create a document fragment 像这样:

$html = file_get_contents('http://example.com');
libxml_use_internal_errors(true);
$doc = new DOMDocument(); 
$doc->loadHTML($html);
//get the element you want to append to
$descBox = $doc->getElementById('element1');
//create the fragment
$fragment = $doc->createDocumentFragment();
//add content to fragment
$fragment->appendXML('<div>This is a test element.</div>');
//actually append the element
$descBox->appendChild($fragment);

请注意,使用 javascript 添加的任何元素都将无法被 PHP 访问。

【讨论】:

【参考方案2】:

你也可以这样追加

$html = '
<html>
    <body>
        <ul id="one">
            <li>hello</li>
            <li>hello2</li>
            <li>hello3</li>
            <li>hello4</li>
        </ul>
    </body>
</html>';
libxml_use_internal_errors(true);
$doc = new DOMDocument(); 
$doc->loadHTML($html);
//get the element you want to append to
$descBox = $doc->getElementById('one');
//create the element to append to #element1
$appended = $doc->createElement('li', 'This is a test element.');
//actually append the element
$descBox->appendChild($appended);
echo $doc->saveHTML();

别忘了在最后一行保存HTML

【讨论】:

以上是关于PHP:通过 ID 将 html 内容附加(添加)到现有元素的主要内容,如果未能解决你的问题,请参考以下文章

通过 PHP 的“插入”mySQL 查询似乎可以工作,但没有添加任何内容

Ajax - 通过 ajax 将输入文件和附加变量发送到 php 文件

在将内容附加到页面后,我如何知道 DOM 已准备就绪?

PHP Drupal:根据页面ID将节点内容添加到块中

Ajax 附加的内容选择器没有响应

向通过 php/html 脚本生成的按钮添加功能