2009-09-18 110 views
2

我想檢查用戶在我有豐富的HTML編輯器中使用的HTML標籤。我不確定如何在C#中執行此操作。如何製作C#白名單/黑名單

我應該使用正則表達式和什麼HTML標籤應該是黑色上市/白名單?

+2

你看這個? http://stackoverflow.com/questions/188870 – dtb 2009-09-18 01:03:23

回答

0

一個簡單的白名單方法:

string input = "<span><b>99</b> < <i>100</i></span> <!-- 99 < 100 -->"; 

// escape & <and> 
input = input.Replace("&", "&amp;").Replace(">", "&gt;").Replace("<", "&lt;"); 

// unescape whitelisted tags 
string output = input.Replace("&lt;b&gt;", "<b>").Replace("&lt;/b&gt;", "</b>") 
        .Replace("&lt;i&gt;", "<i>").Replace("&lt;/i&gt;", "</i>"); 

輸出:

&lt;span&gt;<b>99</b> &lt; <i>100</i>&lt;/span&gt; &lt;!-- 99 &lt; 100 --&gt;

呈現的輸出:

<跨度> < </SPAN > < - 99 < 100 - >

0

假設標籤輸入爲喜歡這裏StackOverflow上一個字符串,您一定想先分割字符串成單個標籤:

string[] tags = "c# html lolcat ".Split(
    new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); 

白色 - /黑名單可以使用HashSet<T>存儲表示標籤:

HashSet<string> blacklist = new HashSet<string>(
    StringComparer.CurrentCultureIgnoreCase) { "lolcat", "lolrus" }; 

然後你不得不檢查tags之一是名單上:

bool invalid = tags.Any(blacklist.Contains); 
+1

我想OP是在談論HTML標籤/元素。 – LukeH 2009-09-18 00:43:15

+0

哈哈是的。嗯,但我想這可能幾乎是相同的基本想法?當然,一切都不在同一行,但不知道如何快速搜索這些東西。 – chobo2 2009-09-18 00:53:27

+0

現在我再讀一遍......我想你是對的。但是HTML中沒有lolcat標籤,所以如果我現在改變我的答案,我會放棄我的例子。 :-( – dtb 2009-09-18 00:55:10