【问题标题】:Allowing and finding links while removing HTML删除 HTML 时允许和查找链接
【发布时间】: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&quot;&gt;www.google.com&lt;/a&gt

我要么需要改进我的正则表达式,要么另谋出路

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

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

【问题讨论】:

    标签: c# asp.net regex


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-04-30
      • 1970-01-01
      • 2021-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多