亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 PHP 的 DOMDocument 從 HTML 字符串中剝離標簽(及其內容)?

如何使用 PHP 的 DOMDocument 從 HTML 字符串中剝離標簽(及其內容)?

PHP
鳳凰求蠱 2024-01-19 09:58:47
我想從 HTML 字符串中刪除所有鏈接及其內容。所以這個…… <a href="#">LINK1</a> and <i>also</i> <a href="#">LINK2</a>應該變成這樣:and <i>also</i>下列 ...$html = '<a href="#">LINK1</a> - and <i>also</i> <a href="#">LINK2</a>';$dom = new DOMDocument;$dom->preserveWhiteSpace = false;$dom->validateOnParse = false;$dom->resolveExternals = false;$dom->substituteEntities = false;$dom->loadHTML( $html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD );$list = $dom->getElementsByTagName('a');while ($list->length > 0) {    $p = $list->item(0);    $p->parentNode->removeChild($p);}$html_new = $dom->saveHTML();echo htmlentities($html);echo '<br><br><hr><br>';echo htmlentities($html_new);$html...除非我包裹在 a 中否則不起作用<div>,但后來我有了<div> and <i>also</i> </div>。我可以用來substr去掉結果中的前 5 個和后 6 個字符,但這太愚蠢了,而且我的臉已經因為我為了弄清楚上面的內容而忍受的所有臉部手掌而感到太酸痛了。關于如何在不使用 regex或訴諸facepalmy hacks的情況下從字符串中刪除所有標簽有什么建議嗎?
查看完整描述

1 回答

?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

我的解決方案是簡單地將我的代碼 nippet 包裝在 a 中div,然后使用substr將其刪除。似乎是通過 DOMDocument 處理有效的內聯 HTML 片段(而不是整個 DOM)的可接受的解決方法。


$html = '<a href="#">LINK1</a> - and <i>also</i> <a href="#">LINK2</a>';


$dom = new DOMDocument;

$dom->preserveWhiteSpace = false;

$dom->validateOnParse = false;

$dom->resolveExternals = false;

$dom->substituteEntities = false;

$dom->loadHTML( '<div>'.$html.'</div>', LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD );


$list = $dom->getElementsByTagName('a');

while ($list->length > 0) {

? ? $p = $list->item(0);

? ? $p->parentNode->removeChild($p);

}


$result = substr($dom->saveHTML(), 5, -6);


查看完整回答
反對 回復 2024-01-19
  • 1 回答
  • 0 關注
  • 167 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號