Bộ chuyển đổi BBCode sang HTML

BBCode là kiểu markup nhẹ của thời kỳ forum — [b]bold[/b], [url], [quote], [code]. phpBB, vBulletin, XenForo và SMF đều từng dùng nó, và hàng triệu bài viết trên các nền tảng đó vẫn còn tồn tại. Bộ chuyển đổi này phân tích BBCode và xuất HTML sạch, hợp lệ để bạn dán vào CMS hiện đại, site tĩnh hoặc pipeline Markdown-to-HTML không hiểu các thẻ forum.

Cách chuyển đổi BBCode

  1. 1

    Dán BBCode của bạn

    Bài viết đầy đủ hoặc đoạn ngắn đều được. Thẻ lồng nhau được xử lý.

  2. 2

    Parser tách token thẻ mở và thẻ đóng

    Các cặp `[tag]...[/tag]` khớp nhau sẽ tạo phần tử HTML tương ứng.

  3. 3

    Thuộc tính thẻ được ánh xạ

    Những dạng như `[color=red]`, `[size=18]` hoặc `[url=https://...]` trở thành inline style hoặc thuộc tính `href`.

  4. 4

    Sao chép HTML

    Sẵn sàng cho bài blog, trang tài liệu hoặc quá trình migrate diễn đàn.

Thẻ được hỗ trợ

BBCode HTML đầu ra
[b]text[/b] <strong>text</strong>
[i]text[/i] <em>text</em>
[u]text[/u] <u>text</u> hoặc <ins>
[s]text[/s] <del>text</del>
[url]link[/url] <a href="link">link</a>
[url=link]text[/url] <a href="link">text</a>
[img]link[/img] <img src="link">
[quote]q[/quote] <blockquote>q</blockquote>
[code]c[/code] <pre><code>c</code></pre>
[list][*]a[*]b[/list] <ul><li>a</li><li>b</li></ul>
[list=1][*]a[/list] <ol><li>a</li></ol>
[color=red]t[/color] <span style="color:red">t</span>
[size=18]t[/size] <span style="font-size:18px">t</span>
[table]...[/table] <table>...</table>

Ghi chú bảo mật

BBCode được thiết kế để an toàn; HTML thì không. Chuyển BBCode do người dùng gửi thành HTML chính là thời điểm kinh điển khiến một diễn đàn đưa XSS vào hệ thống năm 2005. Nếu bạn xuất bản đầu ra đã chuyển đổi:

  • Thoát (escape) mọi văn bản thô bên trong thẻ BBCode.
  • Chỉ cho phép các thẻ mà bộ chuyển đổi phát ra — đừng chuyển tiếp thẻ không xác định như HTML thô.
  • Kiểm tra URL trong [url][img] để chặn scheme javascript:data:.

Công cụ này loại bỏ hoặc vô hiệu hóa mọi URL giống script trong quá trình chuyển đổi.

Migrate cả một diễn đàn

Khi di chuyển hàng nghìn bài viết, hãy chạy bộ chuyển đổi như một quy trình xử lý: xuất bài viết dạng BBCode → chạy qua bộ chuyển đổi này → nhập HTML. Kiểm tra ngẫu nhiên vài chục bài có lồng thẻ bất thường hoặc mã emoji tùy biến có thể không nằm trong bộ thẻ chuẩn.

Những gì BBCode không ánh xạ sạch sang HTML

  • Smilies tùy chỉnh của forum (:D:)) — giữ nguyên rồi render bằng CSS, hoặc tiền xử lý riêng.
  • Thẻ riêng của plugin (như [spoiler], [youtube]) — được liệt kê trong panel custom tags; nếu không sẽ được xuất thành văn bản nguyên dạng.
  • Thẻ trộn hoặc chưa đóng — parser cố tự đóng, nhưng input quá sai định dạng có thể mất định dạng.

Câu hỏi thường gặp

Có: bài viết cộng đồng Steam, các diễn đàn vBulletin và XenForo, một số wiki và nhiều bản cài phpBB cũ. Nó cũng còn tồn tại như markup nền trong một số panel quản trị game server.

Không phải công cụ này — hãy dùng bộ chuyển HTML sang BBCode. Chuyển ngược thường mất mát hơn vì HTML biểu đạt phong phú hơn BBCode nhiều.

Mặc định thẻ không xác định đi qua như văn bản nguyên dạng. Chế độ “strict” sẽ xóa hẳn chúng nếu bạn muốn đầu ra bảo đảm sạch.

Có. [quote], [list][code] có thể lồng sâu tùy ý. Parser theo dõi stack thẻ và đóng chúng đúng cách.

Công cụ liên quan