从代码中删除一些 bbcode
Remove some bbcodes from code
我遇到了问题。我正在使用 bbcode 解析器 HTML,当我尝试解析它时,当我的标签不在我的解析器集中时,我遇到了一些问题。
例如:
我的解析器只允许 [b]
、[center]
和 [i]
标签。
如果我尝试解析 [u]
或 [color={anyColor}]
标记,它 returns 我是一个例外。
我想删除任何其他不允许的标签。
首先我想不允许它出现在我的textarea上,但是,当我使用ctrl+c/ v 来填充它用这些标签填充的文本区域,当数据已经在我的数据库中时我会注意到它。
我的想法:
- 用户输入带有错误标签的字符串
- 我调用任何方法来删除不允许的标签(这是我的问题)
- 在我的数据库中保存数据
有人可以帮我吗?或者给我一些建议?
快速查看在您提供的 link 上找到的解析器 src 后,似乎如果它遇到一个它不知道的标签(意思是不在实例化期间提供的标签列表中) 它出错了(以某种方式)。
目前看来您有几个选择:
- 将您的
ErrorMode
更改为 ErrorFree
。
- 这将不再产生任何异常,而是将
Unknown tags
视为文本。
- 坚持你最初的想法,在前端限制输入。
如果可以,而不是直接进入 HTML,将所有可能的标记添加到解析器,检查是否可以从解析器中获取 c# 对象并消除输出到 html.
之前不需要的标签
或者在html生成后的东西上禁止使用生成的HTML标签。
向解析器的作者发送一封电子邮件/(如果你懂德语)关于 codeplex 的 ticket/issue 并要求他们添加对条带化不需要的标签的支持。
或者如果你想要,因为你有 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", "", ""),
});
我遇到了问题。我正在使用 bbcode 解析器 HTML,当我尝试解析它时,当我的标签不在我的解析器集中时,我遇到了一些问题。
例如:
我的解析器只允许 [b]
、[center]
和 [i]
标签。
如果我尝试解析 [u]
或 [color={anyColor}]
标记,它 returns 我是一个例外。
我想删除任何其他不允许的标签。
首先我想不允许它出现在我的textarea上,但是,当我使用ctrl+c/ v 来填充它用这些标签填充的文本区域,当数据已经在我的数据库中时我会注意到它。
我的想法:
- 用户输入带有错误标签的字符串
- 我调用任何方法来删除不允许的标签(这是我的问题)
- 在我的数据库中保存数据
有人可以帮我吗?或者给我一些建议?
快速查看在您提供的 link 上找到的解析器 src 后,似乎如果它遇到一个它不知道的标签(意思是不在实例化期间提供的标签列表中) 它出错了(以某种方式)。
目前看来您有几个选择:
- 将您的
ErrorMode
更改为ErrorFree
。- 这将不再产生任何异常,而是将
Unknown tags
视为文本。
- 这将不再产生任何异常,而是将
- 坚持你最初的想法,在前端限制输入。
如果可以,而不是直接进入 HTML,将所有可能的标记添加到解析器,检查是否可以从解析器中获取 c# 对象并消除输出到 html.
之前不需要的标签
或者在html生成后的东西上禁止使用生成的HTML标签。
向解析器的作者发送一封电子邮件/(如果你懂德语)关于 codeplex 的 ticket/issue 并要求他们添加对条带化不需要的标签的支持。
或者如果你想要,因为你有 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", "", ""),
});