我遇到了问题。我正在使用HTML的bbcode解析器,当我尝试解析它时,当我的标签不在我的解析器集中时,我遇到了一些问题。
例如:
我的解析器仅允许[b]
,[center]
和[i]
标记。
如果我尝试解析[u]
或[color={anyColor}]
标记,则会返回异常。
我想删除任何其他不被授权的标记。
首先我想过不允许在我的textarea上,但是,当我使用 ctrl + c / v 来填充textarea时填充这些标签,当数据已经存在于我的数据库中时我会注意到它。
我的想法:
任何人都可以帮助我吗?或者建议我别的什么?
答案 0 :(得分:1)
在快速浏览一下您提供的链接上找到的解析器src后,似乎如果它遇到了一个它不知道的标签(意味着没有在实例化过程中提供的标签列表中),它就会出错(在某种方式)。
目前看起来你有几个选择:
ErrorMode
更改为ErrorFree
。
Unknown tags
视为文字。如果可以,不是直接使用HTML,而是将所有可能的标记添加到解析器中,检查是否可以从解析器中获取ac#object,并在输出到html之前消除不需要的标记。< / p>
或者在生成html之后的事情下降时禁止使用生成的HTML标记。
向解析器的作者发送电子邮件/(如果您知道德语)在codeplex上的票证/问题,并要求他们添加对条带化不需要的标签的支持。
或者如果你想要,因为你有src添加功能来剥离不需要的标签,你自己
Tags
中当前BBCodeParser.cs
列表的模式并制作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", "", ""),
});