在删除HTML时允许和查找链接

时间:2015-01-09 11:43:18

标签: c# asp.net regex

我最近在这里询问了几个与两个主题相关的问题

1)停止用户在文本字段中发布的HTML,然后在网页上呈现为HTMl

2)检测字符串中的链接以及它们的开始和结束位置

我在试图把两者放在一起时遇到了问题。

总而言之,我有一个用户可以输入的文本框。他们可以输入任何他们想要的东西。

当发布到服务器时,我想找出该文本中的所有链接并将它们保存到数据库表中。然后在网页上显示他们输入的文字没有任何HTML,除了我自己放入

因此,如果他们输入www.google.com,我会将其转为<a href="http://www.google.com">http://www.google.com</a>

我能做到这一点没问题。但是,如果他们输入类似<p style="margin-left:50px">www.google.com</p>的内容,它会找到链接,更改链接,但网页会将边距位转换为实际的HTML。

我被建议使用HTML编码,但如果我在将链接保存到数据库之后执行此操作,则索引将关闭(链接在文本中的开始和长度)。

如果我在保存链接之前进行HTML编码,链接可能会搞砸。如果他们输入

<a href="www.google.com">www.google.com</a>

它会对文本和我的正则表达式找到的链接进行编码

www.google.com&quot;&gt;www.google.com&lt;/a&gt

我要么需要改进我的正则表达式,要么找另一种方式

作为参考,我的正则表达式是

@"((www\.|(http|https|ftp|news|file)+\:\/\/)[&#95;.a-z0-9-]+\.[a-z0-9\/&#95;:@=.+?,##%&~-]*[^.|\'|\# |!|\(|?|,| |>|<|;|\)])"

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您需要显示用户可能按原样键入的任何其他html标记。尝试分别用<>替换&lt;&gt;字符。

如果在运行正则表达式替换之前执行此操作,则应该解决您的问题。