我最近在这里询问了几个与两个主题相关的问题
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">www.google.com</a>
我要么需要改进我的正则表达式,要么找另一种方式
作为参考,我的正则表达式是
@"((www\.|(http|https|ftp|news|file)+\:\/\/)[_.a-z0-9-]+\.[a-z0-9\/_:@=.+?,##%&~-]*[^.|\'|\# |!|\(|?|,| |>|<|;|\)])"
答案 0 :(得分:0)
如果我理解正确,您需要显示用户可能按原样键入的任何其他html标记。尝试分别用<
和>
替换<
和>
字符。
如果在运行正则表达式替换之前执行此操作,则应该解决您的问题。