我需要刪除HTML文檔中的一些標籤(例如<div></div>
)並保留內部標籤和文本。 我設法用Simple HTML Dom Parser做到這一點。但由於巨大的內存需求,它無法處理大文件。 我更喜歡使用像DOMDocument這樣的原生PHP工具,因爲我讀到它在處理HTML文檔時更加優化和更快。 但我在第一階段掙扎 - 如何刪除一些標籤,同時保留內部文本和標籤。php dom文檔刪除一些html標籤但保留內部標籤和文本
HTML源代碼樣本是:
<html><body><div>00000</div>aaaaa<div>bbbbbb<div>ccc<a>link</a>ccc</div>dddddd</div>eeeee<div>1111</div></body></html>
我試試這個代碼:
$htmltext='<html><body><div>00000</div>aaaaa<div>bbbbbb<div>ccc<a>link</a>ccc</div>dddddd</div>eeeee<div>1111</div></body></html>';
libxml_use_internal_errors(true);
$doc = new DOMDocument();
$doc->loadHTML($htmltext);
$oldnodes = $doc->getElementsByTagName('div');
foreach ($oldnodes as $node) {
$fragment = $doc->createDocumentFragment();
while($node->childNodes->length > 0) {
$fragment->appendChild($node->childNodes->item(0));
}
$node->parentNode->replaceChild($fragment, $node);
}
echo $doc->saveHTML();
它產生的輸出:
<html><body>00000aaaaa<div>bbbbbbccc<a>link</a>cccdddddd</div>eeeee<div>1111</div></body></html>
我需要以下條件:
<html><body>00000aaaaabbbbbbccc<a>link</a>cccddddddeeeee1111</body></html>
有人可以幫我解決這個問題嗎?
如果文檔正文中只有一個標籤,則可以使用該零件的strip_tags使用其第二個參數在字符串中保留標籤。或者,您可以使用preg_replace刪除HTML字符串中的每個div標籤。 – SenseException
有很多不同的標籤,我只想刪除不僅是div的特定標籤。 –