簡體   English   中英

刪除除div類外的所有html標簽和內容

[英]Remove all html tags and content except for a div class

我想從字符串中刪除除div類以外的所有html內容: <div class="toto">blablabla</div>

我應該使用正則表達式還是DOM解析器?

回答drachenstern:

這是bbcode的注釋內容。 而且此div中的html是用Geshi(代碼熒光筆)生成的,所以我不想刪除它。

例如,訪客可以在[code][/code] bbcode標簽中輸入<script></script> 必須刪除[code][/code] bbcode標記之外的所有HTML,否?

使用Regex從網頁成功提取數據幾乎是不可能的,因此我建議使用專用的HTML解析器 有些問題對於您每次嘗試解決它們都很大,因此使用外部庫被認為是可以接受的。

如果您只需要一個div,我想知道您要對特定的div做什么。 它可以在客戶端運行還是必須在服務器端運行? 您要寫刮板嗎?

我想你已經知道答案了:-)

嚴重的是...在這種情況下,它取決於周圍字符串的復雜性...如果它的差異很大,或者您想保留的代碼段嵌套得很深,則dom分析器會發出聲音..如果周圍的內容很漂亮正則表達式可能可以預測。 我可能會以任何一種方式使用DOM,因為它將更易於使用並且是最可靠的方法。

除非您可以保證字符串的這一部分完全是<div class="toto".....</div> ,否則regex不能做到這一點。 確切地說,我的意思是,主要是在class之前沒有其他屬性,並且在此內部沒有其他div元素。 大寫/小寫,空格和單/雙引號應能夠由正則表達式處理。

由於您可能無法做出這些保證(如果可以的話,這將是一個例外情況),因此您需要一個DOM解析器

即使您確實使正則表達式適用於這種非常特殊的情況,但是如果您要進行可能的更改或在其他地方執行類似的任務,則DOM分析器將很快變得值得。

編輯-錯誤地將空格歸類,已修復。

wordpress和其他人仍然使用kses,它似乎是一個非常靈活的過濾器-在這里查看: http : //sourceforge.net/projects/kses/

例:

$string = kses($string, array('div' => array('valueless' => 'n', value => 'toto')));

(我從PHP標記中假定以下內容將是有用的...)

strip_tags()正是這樣做的。 樣例代碼

<?php
$text = '<p>Test paragraph.</p> <div class="blah">Other text</div>';

echo strip_tags($text, '<div>');
echo "\n";
?>

產生輸出

Test paragraph. <div class="blah">Other text</div>

暫無
暫無

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

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