在构建论坛或需要用户输入格式化文本的应用程序时,BBCode是一种非常流行的标记语言。它允许用户以一种简单直观的方式添加格式化效果,如加粗、斜体、下划线等。然而,将BBCode转换为HTML格式以便在网页上正确显示,需要一个解析器。本文将介绍如何使用一个BBCode解析器,并展示如何通过自定义标签来实现代码高亮等功能。
在众多的BBCode解析器中,选择了一个基于Mike343的帖子中提供的解析器。这个解析器基本上能够满足需求,但还有一些问题需要修正,并且缺少一些想要的BBCode标签。因此,对其进行了更新和改进。
可以从以下链接下载更新后的BBCode解析器。这个版本修正了原始实现中的一些问题,并添加了一些缺失的BBCode标签,包括一组自定义标签,用于提供CSharpFormat所提供的语法高亮功能。
要将BBCode块转换为HTML,可以调用BbCodeProcessor
类的静态Format
方法。例如:
string exampleBbcCode =
@"
[b]这段文字是加粗的[/b]
[i]这段文字是斜体的[/i]
[u]这段文字是下划线的[/u]
";
string html = BbCodeProcessor.Format(exampleBbcCode);
上述代码将被转换为:
<p>
<strong>
这段文字是加粗的
</strong>
<br>
<em>
这段文字是斜体的
</em>
<br>
<u>
这段文字是下划线的
</u>
</p>
通过CSS,可以自定义BBCode标签的显示样式。例如,Cyotek网站使用以下默认规则:
.bbc-codetitle,
.bbc-quotetitle {
margin: 1em 1.5em 0;
padding: 2px 4px;
background-color: #A0B3CA;
font-weight: bold;
}
.bbc-codecontent,
.bbc-quotecontent {
margin: 0 1.5em 1em;
padding: 5px;
border: solid 1px #A0B3CA;
background-color: #fff;
}
.bbc-codecontent pre {
margin: 0;
padding: 0;
}
.bbc-highlight {
background-color: #FFFF00;
color: #333399;
}
.bbc-spoiler {
color: #C0C0C0;
background-color: #C0C0C0;
}
.bbc-indent {
padding: 0 1em;
}
.bbc-list {
margin: 1em;
}
如果在使用MVC,可能会发现以下HTML Helper对于在视图中转换代码非常有用:
public static string FormatBbCode(this HtmlHelper helper, string text)
{
return BbCodeProcessor.Format(helper.Encode(text));
}