我应该使用Replace()而不是HtmlEncode()吗?

时间:2008-12-28 04:02:45

标签: asp.net

是否应该放弃HtmlEncode()并使用Replace()而不是我想解析帖子/评论中的链接(使用正则表达式)? HtmlEncode()取代&与& amp; amp;我认为可能会导致链接出现问题,我应该使用Replace()替换<与& lt;?

例如,如果用户发布的内容如下:
请参阅此网站http://www.somesite.com/somepage.aspx?qs1=1&qs2=2&qs3=3

我希望它是:
查看此网站&lt; a href =“http://www.somesite.com/somepage.aspx?qs1=1&qs2=2&qs3=3”&gt; http://www.somesite.com/somepage.aspx?qs1=1&qs2=2&qs3=3</a&gt;

但是使用HtmlEncode(),URL将成为(注意&符号):
请参阅此网站http://www.somesite.com/somepage.aspx?qs1=1&amp;qs2=2&amp;qs3=3

我应该使用Replace()来避免这个问题吗?

由于

5 个答案:

答案 0 :(得分:4)

实际上,你最后一个例子 - 你担心的那个 - 是唯一正确的例子。在HTML文档中,&符号用于引入实体引用,因此必须进行转义。虽然大多数浏览器都是宽容的,当它们显然不是实体引用的一部分时,它们可以让它们漏掉,但如果它们在URL中的使用看起来像一个实体,你就会遇到细微的问题。

HtmlEncode()完成工作。

答案 1 :(得分:1)

也许您正在寻找UrlEncode()? http://msdn.microsoft.com/en-us/library/zttxte6w.aspx

答案 2 :(得分:0)

你想要替换什么?为什么? HtmlEncode()通常用于清理用户提供的数据。也就是说,如果你允许用户提交链接,你可能不希望HtmlEncode它们,首先。你基本上会按照用户提供的方式渲染它们。

答案 3 :(得分:0)

更换&amp;与&amp; amp; amp; href属性内部是正确的。如果不这样做,那么您的代码在技术上是无效的。此外,即使它在链接内,你也应该逃避它。你遇到问题的唯一情况是你多次HTMLEncoding它。

答案 4 :(得分:0)

我建议不要使用Replace来完成HTMLEncode或URLEncode的工作。这些功能是定制设计的,用于处理您在用户输入的内容中看到的大多数问题,如果您尝试使用自己的代码替换它们,结果可能会变得难看(我在这里谈论经验)如果您忘记了重要的事情。