BBCode 转 HTML 完全指南:论坛标记如何变成网页
BBCode 是论坛的方括号标记,浏览器不认。这篇讲清楚常见标签怎么映射到 HTML、迁移老论坛内容的做法,以及它和 Markdown 的真实区别。
BBCode 转 HTML 完全指南:论坛标记如何变成网页
如果你折腾过老论坛,大概见过满屏的方括号:[b]、[quote]、[img]。这套写法叫 BBCode,也就是 Bulletin Board Code,phpBB、vBulletin、Discuz 这些论坛系统都靠它让用户排版,又不至于把原始 HTML 直接交到用户手里。问题是,浏览器根本不认识方括号。一旦你想把论坛里的内容搬到博客、CMS 或者一个静态站点上,就得先把 BBCode 翻译成真正的 HTML。这篇就把这件事讲透。
BBCode 到底是什么
BBCode 诞生的初衷是安全。早年的论坛不敢让用户写 HTML,怕有人塞进 <script> 或者破坏页面结构,于是发明了一套用方括号包裹的标记:[b]加粗[/b]、[url=https://example.com]链接[/url]。论坛后台再把这些方括号转成受控的 HTML 标签,用户碰不到危险的部分。换句话说,BBCode 本质上是 HTML 的一个安全替身。它表达力没 HTML 强,但对发帖排版完全够用。
常见标签怎么映射到 HTML
转换的核心是一张标签对照表。说一个最具体的:[b] 对应 <b>(更现代的做法是转成 <strong>,语义更准)。其余的也都有固定归宿:
[i]转<em>,[u]转<u>,[s]转<s>[url=...]文字[/url]转<a href="...">文字</a>[img]地址[/img]转<img src="地址">[quote]和[quote=名字]转<blockquote>[list]配[*]转<ul>加<li>[color=red]和[size=18]转成带内联样式的<span>[code]转<pre><code>
看一个真实的输入输出例子。你粘进:
[b]粗体[/b]
转出来就是:
<strong>粗体</strong>
再复杂一点,[b][color=blue]促销[/color][/b] 会变成既加粗又变蓝的嵌套结构。一个靠谱的转换器会逐个标签遍历,把嵌套关系还原成嵌套的 HTML,而不是简单做字符串替换。我用 Toolora 的 BBCode 转 HTML 工具 试过一堆真实帖子,它先把原始文本转义,再处理标签,所以即便帖子里夹着 <script> 或者满是尖括号的报错日志,转出来的也只是无害的可见文字,不会真的执行。这一点对从论坛搬运不可信内容很关键。
迁移老论坛内容的实战做法
迁移最容易踩的坑是 [code] 块。设计上,[code] 和 [/code] 之间的内容必须保持原样,转义成实体后包进代码块,但里面的 BBCode 一律不解析。所以 [code][b]不会加粗[/b][/code] 应该原样显示 [b]不会加粗[/b] 这几个字符,而不是真把它加粗。如果你写脚本批量转换,一定要先把代码块单独抠出来处理,否则一篇讲 BBCode 用法的教程会被转换器自己破坏掉。
第二个坑是没闭合的标签。一个孤零零的 [b] 没有对应的 [/b],正确做法是当成普通文本留着,而不是去猜用户想加粗到哪。如果你转完发现一段文字莫名其妙全粗了,多半是某处漏了闭合标签,转换器一路加粗到了文末。批量迁移前先扫一遍标签配对,能省掉很多返工。迁移过程中如果还需要清理多余标签或处理实体,可以顺手用 清除 HTML 标签工具 把转好的 HTML 再压成纯文本做对比校验。
BBCode 和 Markdown 的真实区别
很多人把 BBCode 和 Markdown 当成一回事,其实差别不小。Markdown 追求的是写起来像纯文本,**粗体**、# 标题、[链接](url),读源码本身就顺眼。BBCode 不在乎源码好不好读,它在乎的是论坛后台能不能安全地把它转成受控 HTML,所以全是显式的方括号开闭标签。
落到使用场景上:Markdown 是写作者的工具,博客、文档、README 都在用;BBCode 是论坛系统的工具,几乎只活在留言板生态里。今天你接触 BBCode,基本都是因为要把老内容迁出来。如果你的目标平台吃 Markdown 而不是 HTML,可以先转成 HTML 再用 HTML 转 Markdown 工具 走第二程,两步拼起来就完成了从论坛标记到 Markdown 的完整迁移链路。
安全这件事别想反了
最后澄清一个常见误解。有人看到输入里有 <script> 标签,就以为转出来的 HTML 不安全。恰恰相反。正确的转换顺序是:先把原始文本整体转义成实体(&、<、>、双引号、单引号),再去匹配 BBCode 标签。这样一来,粘进来的 <script> 在转义那一步就变成了可见文字,根本没机会成为可执行标记;只有你明确写的那几个 BBCode 标签,才会被还原成一组固定已知的 HTML 元素。换句话说,转换器输出的 HTML 标签集合是封闭的、可控的,这正是 BBCode 当年被发明出来的理由。
把这套逻辑理顺,论坛内容迁移就不再是体力活。对照表、代码块隔离、闭合检查、转义优先,四件事做到位,几千条老帖也能干净地搬进现代网页。
Made by Toolora · Updated 2026-06-13