背景
我编写了非常简单的 BBCode 解析器,使用C#
它将 BBCode 转换为 HTML。目前它只支持[b]
,[i]
和[u]
标签。我知道无论用户输入什么,BBCode 总是被认为是有效的。我找不到如何将 BBCode 转换为 HTML 的严格规范
问题
- 是否存在标准的“BBCode to HTML”规范?
- 我应该如何处理
"[b][b][/b][/b]"
?现在解析器产生"<b>[b][/b]</b>"
. - 我应该如何处理
"[b][i][u]zzz[/b][/i][/u]"
输入?目前我的解析器足够聪明,可以"<b><i><u>zzz</u></i></b>"
为这种情况产生输出,但我想知道这是“太聪明”的方法,还是不是?
更多细节
我找到了一些现成的 BBCode 解析器实现,但它们对我来说太重/太复杂了,更糟糕的是,使用了大量的正则表达式并且产生的标记不是我所期望的。理想情况下,我想在输出端接收 XHTML。为了推断“BBCode 到 HTML”转换规则,我使用了这个在线解析器:http ://www.bbcode.org/playground.php 。它生成的 HTML 在我看来是直观正确的。我唯一不喜欢它的就是不生成 XHTML。例如"[b][i]zzz[/b][/i]"
转换为"<b><i>zzz</b></i>"
(注意结束标签顺序)。FireBug 当然将其显示为"<b><i>zzz</i></b><i></i>"
. 据我了解,浏览器会修复此类错误的结束标签订单情况,但我对此表示怀疑:
- 我是否应该依赖此浏览器功能而不尝试制作 XHTML。
- 也许
"[b][i]zzz[/b]ccc[/i]"
必须被理解为"<b>[i]zzz</b>ccc[/i]"
- 从逻辑上看这种不正确的格式,但与流行论坛的 BBCode 输出相冲突(*zzz****ccc*,而不是 **[i]zzzccc[/i])
谢谢。