簡體   English   中英

在 DOM 中保存 html 時不需要的段落

[英]Unwanted paragraph when saving html in DOM

使用 DOM 元素操作並使用$dom->saveHTML(); 在我的輸出中獲得額外的空段落,這是我的代碼:

PHP:

$dom_str = "Phasellus eu arcu vest, <mark data-tooltip='tooltip'></mark> sodales dui."
$dom = new DOMDocument;
$dom->loadHTML($dom_str);
$dom_items = $dom->getElementsByTagName('mark'); // retrieving elements by tag

$dom_app = $dom->createElement('amp-script');
$dom_span = $dom->createElement('span');

$dom_app->appendChild($dom_span);

$mark_item = $dom_items->item(0);
$mark_item->appendChild($dom_app); // appending additional HTML
$output_dom = $dom->saveHTML(); // saving DOM       

$output .= '<div><p>'. $output_dom .'</p></div>';

return $output; 

輸出:

<div>
<p></p> <! –– Unwanted paragraph ––>
<p>Phasellus eu arcu vest, <mark><amp-script><span></span></amp-script></mark> sodales dui</p>
</div>

已經試過$dom->loadHTML($dom_str, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); 但空段落仍然存在。

當使用部分 HTML 片段而不是完整的 HTML 文檔調用loadHTML時,將LIBXML_HTML_NOIMPLIEDLIBXML_HTML_NODEFDTD OR'd 一起作為第二個參數傳遞可能是個好主意,否則DOMDocument將開始為您“修復”事物:

$dom->loadHTML($dom_str, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);

我還必須添加libxml_use_internal_errors(true); 使mark標簽起作用

通過這兩個更改,並在最后忽略您的字符串連接,我得到了這個:

$dom_str = "Phasellus eu arcu vest, <mark data-tooltip='tooltip'></mark> sodales dui.";
$dom = new DOMDocument;
libxml_use_internal_errors(true); // Enabled HTML5 tags
$dom->loadHTML($dom_str, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); // Don't automatically create html/body/doctype tags
$dom_items = $dom->getElementsByTagName('mark'); // retrieving elements by tag

$dom_app = $dom->createElement('amp-script');
$dom_span = $dom->createElement('span');

$dom_app->appendChild($dom_span);

$mark_item = $dom_items->item(0);
$mark_item->appendChild($dom_app); // appending additional HTML
echo $dom->saveHTML(); // saving DOM

這將輸出以下內容:

<p>Phasellus eu arcu vest, <mark data-tooltip="tooltip"><amp-script><span></span></amp-script></mark> sodales dui.</p>

演示: https : //3v4l.org/KRDKS

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM