为什么初始 BR 会破坏 DOMDocument 输出?
Why does an initial BR break DOMDocument output?
以下内容破坏了 DOMDocument,因为在尝试从中获取 HTML 时仅输出 BR 标记。拥有初始 BR 标签有什么问题?
$dom = new DOMDocument('1.0', 'utf-8');
$dom->loadHTML("<br /><p>Here is some text!</p>", LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$value = $dom->saveHtml($dom->documentElement);
print_r($value);
(上下文:清理使用所见即所得输入的文本。)
来自the docs:
Represents an entire HTML or XML document; serves as the root of the document tree.
一个文档中不能有多个根元素。您刚刚遇到错误恢复。
将HTML改成这样,例如:
<p>Here is some text!</p><p>Test</p>
结果:
<p>Here is some text!<p>Test</p></p>
(第二段插入第一段)。
将内容包装在单个根元素中,例如 div,将解决您的具体问题:
<div><br><p>Here is some text!</p></div>
给出:
<div>
<br><p>Here is some text!</p>
</div>
也就是说,我怀疑您最好使用 HTML Purifier 来清理用户输入 HTML。
以下内容破坏了 DOMDocument,因为在尝试从中获取 HTML 时仅输出 BR 标记。拥有初始 BR 标签有什么问题?
$dom = new DOMDocument('1.0', 'utf-8');
$dom->loadHTML("<br /><p>Here is some text!</p>", LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$value = $dom->saveHtml($dom->documentElement);
print_r($value);
(上下文:清理使用所见即所得输入的文本。)
来自the docs:
Represents an entire HTML or XML document; serves as the root of the document tree.
一个文档中不能有多个根元素。您刚刚遇到错误恢复。
将HTML改成这样,例如:
<p>Here is some text!</p><p>Test</p>
结果:
<p>Here is some text!<p>Test</p></p>
(第二段插入第一段)。
将内容包装在单个根元素中,例如 div,将解决您的具体问题:
<div><br><p>Here is some text!</p></div>
给出:
<div> <br><p>Here is some text!</p> </div>
也就是说,我怀疑您最好使用 HTML Purifier 来清理用户输入 HTML。