BBCodeをHTMLに変換
このBBCode・HTML変換ツールは、掲示板でよく使われる実用的な書式タグを、予測可能なHTMLへ変換します。太字、斜体、下線、URL、引用、リストを含むテキストを入力すると、Webページや編集工程で管理しやすいHTML文字列を取得できます。対応タグは入れ子にでき、通常のHTML文字はエスケープされます。誤った入れ子を黙って壊れたマークアップにすることなく、明確なエラーとして通知します。処理は決定的で、ネットワーク接続を必要とせず、同じ入力からは毎回同じ結果が得られます。
無料で実行
対応しているBBCodeタグを変換します
本ツールは、一般的な6種類のBBCodeを認識します。対象は<code>[b]</code>、<code>[i]</code>、<code>[u]</code>、<code>[url]</code>、<code>[quote]</code>、<code>[list]</code>です。太字は<code><strong></code>、斜体は<code><em></code>、下線は<code><u></code>、引用は<code><blockquote></code>になり、リストは項目を持つ順序なしHTMLリストになります。リンクは<code>[url=https://example.com]ラベル[/url]</code>または<code>[url]https://example.com[/url]</code>と記述できます。リスト内の各項目は<code>[*]</code>で始めます。開始した順序と逆に閉じればタグを入れ子にできるため、太字の中に斜体を含めることも可能です。対応範囲外のタグはHTMLとして解釈されず、エスケープ済みの文字列として残ります。この明確な範囲により、フォーラム製品ごとに異なる多数の拡張機能を不完全に模倣せず、結果を把握しやすくしています。色、文字サイズ、画像、表、メディアなどの独自タグが必要な場合は、変換の前後で元システムに適した規則を別途適用してください。
検証方法と安全な出力を確認します
認識されるBBCodeは、構造上正しく対応していなければなりません。すべての開始タグには対応する終了タグが必要で、入れ子のタグは開始時と逆の順序で閉じる必要があります。また、リスト項目のマーカーはリストの直下に置きます。不正な並びの場合、途中までの文書を返すのではなく、無効な入力としてエラーを返します。自動公開の工程で黙って修復すると、強調、リンク、引用が作成者の意図しない範囲まで広がる可能性があるため、この検証は重要です。描画時には山括弧やアンパサンドを含む通常テキストをHTML用にエスケープし、リンク先も属性値として安全な形にします。明示的なURLスキームはHTTP、HTTPS、mailtoに限定し、フラグメントと相対パスも受け付けます。この確認により、BBCodeリンクが明白なスクリプトURLになることを防ぎます。ただし、埋め込み先のアプリケーションでも独自のセキュリティ規則とコンテンツ方針を適用してください。本ツールは構文変換を行うものであり、HTMLサニタイザー、権限管理、モデレーションを完全に代替するものではありません。
公開ワークフローで結果を利用します
<code>text</code>の値を送信し、返された<code>html</code>フィールドから変換後のマークアップを取得します。この単純な形式は、移行スクリプト、フォーラムのエクスポート、コメント処理、ナレッジベースの取り込み、テストデータに適しています。大量のアーカイブを処理する前に、実際の移行元から複数のレコードを抽出して確認してください。BBCodeの方言には違いがあり、番号付きリストの引数、引用者の特殊な表記、独自メディアタグなど、本機能が意図的に対象外としている記法が使われる場合があります。移行結果の確認が完了するまでは、元のBBCodeも変換結果と一緒に保存してください。情報を失わずに、移行元固有の前処理を調整できます。対話型エディターでは、書式を破棄せず、タグ不整合のエラーを該当内容の近くに表示してください。一括取り込みでは、失敗した項目を記録して運用方針に従って継続します。APIによる変換料金は1項目あたり$0.002です。ネットワーク、時刻、乱数、外部サービスに依存しないため、受理された同じ入力からは実行のたびにバイト単位で同等のHTMLが得られます。
活用例
フォーラム投稿を移行します
エクスポートした投稿の対応書式を変換してから、HTMLベースの公開システムへ取り込みます。
過去のコメントをプレビューします
一般的なBBCodeで保存されたコメントを予測可能なHTMLで表示し、誤った入れ子を編集者へ通知します。
ナレッジベースを統一します
文書移行時に太字、リンク、引用、箇条書きを一貫したHTMLの部分集合へ変換します。
よくある質問
どのBBCodeタグに対応していますか?
b、i、u、url、quote、listに対応しています。リスト項目には[*]を使用し、その他のタグはエスケープ済みテキストとして残します。
タグの対応が崩れている場合はどうなりますか?
リクエストは無効な入力として失敗し、不整合または誤って入れ子になったタグを示すエラーを返します。
リンクにラベルを付けられますか?
はい。[url=https://example.com]ラベル[/url]を使用できます。リンク先自体を[url]と[/url]の間に置くこともできます。
HTMLに関するすべての危険を除去できますか?
いいえ。テキストと属性をエスケープし、危険な明示的URLスキームを拒否しますが、必要に応じてアプリケーション側でもセキュリティ方針とサニタイザーを適用してください。
変換料金はいくらですか?
APIリクエスト1件につき$0.002です。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/text/bbcode-to-html \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"[b]Important[/b]: visit [url=https://example.com]our site[/url]."}'const res = await fetch("https://api.kit.forhosting.com/text/bbcode-to-html", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "[b]Important[/b]: visit [url=https://example.com]our site[/url]."
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/bbcode-to-html",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "[b]Important[/b]: visit [url=https://example.com]our site[/url]."
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/bbcode-to-html", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"[b]Important[/b]: visit [url=https://example.com]our site[/url]."}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"[b]Important[/b]: visit [url=https://example.com]our site[/url]."}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/bbcode-to-html", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "[b]Important[/b]: visit [url=https://example.com]our site[/url]."
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.bbcode_to_html",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_chars | 200000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |