php - 如何将 HTML 插入 PHP DOM 对象?

标签 php dom

<分区>

我正在使用 PHP 的 DOM 对象为我的网站创建 HTML 页面。这对我的头脑很有用,但是因为我将在正文中输入大量 HTML(不是通过 DOM),所以我认为我需要使用 DOM->createElement($bodyHTML)将我的 HTML 从我的站点添加到 DOM 对象。

但是DOM->createElement似乎解析了所有 HTML 实体,所以我的最终结果是在页面上显示 HTML 而不是实际呈现的 HTML。

我目前正在使用 hack 来让它工作,

$body = $this->DOM
             ->createComment('DOM Glitch--><body>'.$bodyHTML."</body><!--Woot");

它将我所有的站点代码放在评论中,我绕过评论并手动添加 <body>标签。

目前这种方法有效,但我相信应该有更合适的方法来做到这一点。理想情况下类似 DOM->createElement()不会解析任何字符串。

我也试过使用 DOM->createDocumentFragment()但是它不喜欢某些字符串,因此它会出错并且无法工作(同时占用额外的 CPU 能力来重新解析正文的 HTML)。

所以,我的问题是,除了使用 DOM->createComment() 之外,还有更好的方法吗? ?

最佳答案

您使用 DOMDocumentFragment 对象将任意 HTML block 插入到另一个文档中。

$dom = new DOMDocument();
@$dom->loadHTML($some_html_document); // @ to suppress a bajillion parse errors

$frag = $dom->createDocumentFragment(); // create fragment
$frag->appendXML($some_other_html_snippet); // insert arbitary html into the fragment

$node = // some operations to find whatever node you want to insert the fragment into

$node->appendChild($frag); // stuff the fragment into the original tree

关于php - 如何将 HTML 插入 PHP DOM 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2255158/

相关文章:

php - 变量 mysql 查询(其中 $variable = everything)

PHP Firebird API : php_interbase or PDO?

javascript - 如何使用来自变量的 javascript 设置对象的宽度和定位?

angular - 如何在 Angular 2 中获取 `DOM Element`?

javascript - 访问 iframe 中的框架集元素

javascript - 自定义元素和 connectedCallback() : wait for parent node to be available before firing a function

php - 如何使用 Symfony ACL 过滤我的 Doctrine 查询

c# - 发布有效数据后从 C# 下载文件

php - 使用 PHP 创建图表并导出为 PDF

javascript - 获取 ajax 响应中 JS 对象的引用