从代码中删除一些 bbcode

Remove some bbcodes from code

我遇到了问题。我正在使用 bbcode 解析器 HTML,当我尝试解析它时,当我的标签不在我的解析器集中时,我遇到了一些问题。

例如: 我的解析器只允许 [b][center][i] 标签。 如果我尝试解析 [u][color={anyColor}] 标记,它 returns 我是一个例外。

我想删除任何其他不允许的标签。

首先我想不允许它出现在我的textarea上,但是,当我使用ctrl+c/ v 来填充它用这些标签填充的文本区域,当数据已经在我的数据库中时我会注意到它。

我的想法:

  1. 用户输入带有错误标签的字符串
  2. 我调用任何方法来删除不允许的标签(这是我的问题)
  3. 在我的数据库中保存数据

有人可以帮我吗?或者给我一些建议?

快速查看在您提供的 link 上找到的解析器 src 后,似乎如果它遇到一个它不知道的标签(意思是不在实例化期间提供的标签列表中) 它出错了(以某种方式)。

目前看来您有几个选择:

  1. 将您的 ErrorMode 更改为 ErrorFree
    • 这将不再产生任何异常,而是将 Unknown tags 视为文本。
  2. 坚持你最初的想法,在前端限制输入。
  3. 如果可以,而不是直接进入 HTML,将所有可能的标记添加到解析器,检查是否可以从解析器中获取 c# 对象并消除输出到 html.

  4. 之前不需要的标签
  5. 或者在html生成后的东西上禁止使用生成的HTML标签。

  6. 向解析器的作者发送一封电子邮件/(如果你懂德语)关于 codeplex 的 ticket/issue 并要求他们添加对条带化不需要的标签的支持。

  7. 或者如果你想要,因为你有 src 添加功能来去除不需要的标签,你自己

    • 我认为这不应该太难,遵循他们对 BBCodeParser.cs 中当前 Tags 列表的模式并制作一个 TagsToIgnore 列表并在之前添加一个检查标签解析的其余部分只是为了剥离/继续下一个标记。

编辑: 您可以让解析器将标签解释为不显示任何内容。你在哪里初始化 bbCodeParser.

 var parser = new BBCodeParser(new[]
            {
                // keep these tags 
                new BBTag("b", "<b>", "</b>"), 
                new BBTag("i", "<span style=\"font-style:italic;\">", "</span>"), 
                new BBTag("u", "<span style=\"text-decoration:underline;\">", "</span>"),
                // remove these (or at least there markup) 
                new BBTag("code", "", ""), 
                new BBTag("img", "", ""), 

            });