Markdown 转 BBCode:论坛发帖格式怎么对应标签
讲清楚 Markdown 转 BBCode 的标签映射,粗体斜体链接列表代码块各自对应哪个方括号标签,phpBB、Discuz、vBulletin 发帖为什么认 BBCode,以及它和 Markdown 的真实区别。
Markdown 转 BBCode:论坛发帖格式怎么对应标签
我把仓库里的更新日志贴到一个跑 phpBB 的社区论坛时,整页星号原样显示出来,标题没了,列表也散了。论坛认的不是 Markdown,是 BBCode,一种方括号写的标签语言。这篇说清楚两者怎么对应,哪些标签能对上,哪些对不上,以及为什么论坛偏要用 BBCode。
BBCode 是什么,哪些地方在用
BBCode 全称 Bulletin Board Code,公告板代码。它用方括号包标签,和 HTML 的尖括号不是一回事。粗体写成 [b]文字[/b],链接写成 [url=https://example.com]文字[/url],闭合标签前面多一个斜杠。phpBB、vBulletin、XenForo、Discuz 以及大量游戏板块和兴趣论坛都吃这一套。
论坛选 BBCode 而不是直接放开 HTML,原因很实在:方括号标签集小而固定,没法注入脚本,也没法塞任意样式,一个匿名用户发的帖子再花哨也伤不到页面。这是它存在了二十多年还没被淘汰的理由。
标签映射:哪个 Markdown 对应哪个标签
核心的一张对照表,记住它你就知道转换后该长什么样:
- 粗体
**文字**或__文字__转成[b]文字[/b] - 斜体
*文字*或_文字_转成[i]文字[/i] - 删除线
~~文字~~转成[s]文字[/s] - 链接
[文档](网址)转成[url=网址]文档[/url] - 图片
转成[img]网址[/img] - 行内代码和围栏代码块都转成
[code]…[/code] - 引用行
> 文字转成[quote]文字[/quote] - 无序列表合并进一个
[list],每项用[*]标记 - 有序列表用
[list=1],让论坛渲染出数字
举个最常见的例子,粗体这一项:你写 **已发布**,工具吐出来的就是 [b]已发布[/b]。粗斜体组合 ***文字*** 会变成嵌套的 [b][i]文字[/i][/b]。像 my_var_name 这种带下划线的标识符会原样保留,不会被误判成斜体,命令和变量名不会被排版规则坑掉。
一段真实输入输出
把下面这段 Markdown 贴进 Markdown 转 BBCode 工具:
## 更新内容
**修复**了登录卡死
- 优化加载速度
- [说明文档](https://toolora.com)
右边实时出来的是:
[b][size=120]更新内容[/size][/b]
[b]修复[/b]了登录卡死
[list]
[*]优化加载速度
[*][url=https://toolora.com]说明文档[/url]
[/list]
三条项目并成了一个 [list] 容器,而不是拆成三个独立列表;链接的地址跑进了开标签的方括号里,可见文字夹在中间。这个对调是对的,所有论坛解析器都按 [url=地址]文字[/url] 这个顺序读。
BBCode 和 Markdown 的真实区别
两者都描述排版,但设计目标不同。Markdown 是给写作者用的,追求源文本本身就好读;BBCode 是给论坛解析器用的,追求安全可控。最容易踩的差异是标题:BBCode 根本没有 h1 到 h6 这种标题标签,所以一个 Markdown 标题只能渲染成粗体加 [size] 字号标签,这是论坛里通行的替代写法。如果你的论坛把 [size] 去掉,标题仍是粗体,只是回到正文字号。
另一个差异在代码。Markdown 区分行内代码和代码块,BBCode 只有一个 [code] 标签,所以反引号片段和围栏块都变成 [code] 块,行内代码在多数论坛上会显示成一个小等宽方框,而不是顺在句子里。图片也是,BBCode 只按 URL 嵌图,alt 文字会被丢掉,各论坛都这么处理。
反向转换和相邻场景
如果你手上是别人发的 BBCode 帖子,想搬回博客或文档,方向反过来用 BBCode 转 HTML 工具 就行,方括号标签会还原成网页能直接渲染的结构。两个工具配一对,论坛和站点之间来回搬内容都不用手改标签。
实际发帖前我习惯先在转换器里过一遍,确认标题降级成了粗体、链接的方括号顺序没问题、列表合并成了一个容器,再复制贴到论坛。整套都在浏览器本地跑,粘进去的内容不上传,涉及私密草稿用复制按钮而不是分享链接,输入就不会进任何访问日志。
Made by Toolora · Updated 2026-06-13