【发布时间】:2015-01-09 11:43:18
【问题描述】:
我最近在这里问了几个与两个主题相关的问题
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\/_:@=.+?,##%&~-]*[^.|\'|\# |!|\(|?|,| |>|<|;|\)])"
【问题讨论】: