【问题标题】:Replace all & that are not a HTML entity using C#使用 C# 替换所有不是 HTML 实体的 &
【发布时间】:2011-02-12 23:38:11
【问题描述】:

基本上是this question using php 的副本,但我需要它用于 C#。

在输出到屏幕之前,我需要能够替换当前不是任何 HTML 实体(例如 &)的任何 &。我在考虑一个正则表达式,但我不确定 .Net 是否有内置的东西可以做到这一点。

【问题讨论】:

  • 所以你有一个混合了 HTML 和非 HTML 文本的字符串?你应该靠近源头并在它首先混入字符串之前清理它。
  • 是的,我正在尝试快速解决一个问题,然后我可以返回并解决处理字符串如何制作的真正问题。不过,解决真正的问题需要一些时间。
  • 我创建了一个函数来编码 & 和 ' 而不会弄乱已经编码的 & 或 ' 或 " 。检查以下链接http://stackoverflow.com/a/21317732/2123134

标签: c# .net filtering


【解决方案1】:

您可以使用HttpUtility.HtmlEncode
对于页面或用户控件的上下文,您可以使用Server.HtmlEncode

【讨论】:

    【解决方案2】:

    BetterAntiXss.HtmlEncode,防止XSS。

    【讨论】:

      【解决方案3】:

      您总是可以对字符串进行 HTML 解码(这会将任何 HTML 符号转换为它们的显示等效项),替换任何 &,然后再次对字符串进行编码(这会将符号转换回它们原来的样子)。不过,您可能需要注意副作用。

      【讨论】:

      • 这不会去掉由 & 编码的 & 符号吗?
      • 是的 - 这就是为什么您想稍微测试一下这个解决方案。我对这个问题的回应是替换 &带有一些不太可能使用的特殊符号(如 (char)1),解码、替换、编码,然后将 (char)1 替换为 &.
      • 在你的例子中为什么不直接替换所有 &与 & 然后全部 & 与 &为什么要打扰另一个字符串
      • 似乎解码/编码循环可以处理它而无需更换符号。解码会将已经编码的字符转换回纯文本,编码会反转它,同时还可以处理以前未正确编码的字符。
      • @cory,你的想法会让 " => "
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-22
      • 1970-01-01
      • 2011-01-22
      • 2015-12-20
      • 1970-01-01
      • 2011-04-27
      相关资源
      最近更新 更多