2015-11-03 48 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會更好。