2009-09-18 33 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