我有一个必须从 html 代码中删除的输入字符串,所以我使用默认的 .Net 函数 .HtmlEncode() 来转义所有危险字符。
现在我正在尝试通过正则表达式将输入字符串中的 URL 替换为 HREF 锚点。
问题是,当我在调用 .HtmlEncode() 之前“链接”URL 时,锚标记会丢失,这是合乎逻辑的。但是当我在调用 .HtmlEncode() 之后进行链接时,某些 url 会因为包含危险字符而格式错误?
这似乎是一个鸡蛋问题,应该如何解决这个问题?
例子:
输入字符串:
See http://example.com/q=1&x=2
预期结果:
See <a href="http://example.com/q=1&x=2">http://example.com/q=1&x=2</a>
先做HtmlEncode,之后调用Linkify:
See <a href="http://example.com/q=1&x=2">http://example.com/q=1&x=2</a>
先做Linkify,之后调用HtmlEncode:
See <a href="http://example.com/q=1&x=2">http://example.com/q=1&x=2</a>
我目前使用的解决方案是对正则表达式 (linkify) 找到的所有匹配项调用 .HtmlDecode(),但这不是 100% 万无一失的,因为理论上有效的 URL 可以包含&
将被解码的模式,但不应该.