2015-11-03 21 views
0

以下内容打破了DOMDocument,因为当试图从HTML中获取HTML时,只输出BR标签。拥有初始BR标签有什么问题?为什么初始BR打破DOMDocument输出?

$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); 

(上下文:清理文本具有WYSIWYG输入。)

回答

1

the docs

表示整个HTML或XML文档;充当文档树的根。

在文档中不能有多个根元素。你只是遇到错误恢复。

改变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会更好。