現在の位置: ホーム> 最新記事一覧> カスタムBBCodeコンバーターを構築します

カスタムBBCodeコンバーターを構築します

M66 2025-05-31

PHPでテキストのフォーマットを扱う場合、BBCode(簡略化されたマークアップ言語)がよく使用されます。これにより、ユーザーは、単純なタグを使用して、太字、イタリック、リンクなどのテキストスタイルを追加できます。この記事では、 MB_EREGI_REPLACE関数を使用してシンプルなカスタムBBCodeコンバーターを構築して、BBCodeタグを対応するHTMLタグに変換する方法を示します。


MB_EREGI_REPLACEとは何ですか?

MB_EREGI_REPLACEは、マルチバイト文字列のPHPの正規表現置換機能であり、症例感受性マッチングをサポートします。その利点は、UTF-8などのマルチバイトエンコードされたテキストを正しく処理できることです。これは、中国の環境でのテキスト処理に非常に適しています。

関数プロトタイプ:

 mb_eregi_replace(string $pattern, string $replacement, string $string): string
  • $パターン:マッチパターン(正規表現)

  • $の交換:コンテンツを交換します

  • $文字列:保留中の文字列


例:MB_EREGI_REPLACEを使用した単純なBBCodeコンバーターの実装

次の例は、bbcodeタグ[b] ... [/b]<strong> ... </strong>[i] ... [/i]<em> ... </em>に変換する方法と、パラメーターでリンクを処理する方法[url = link] text [/url]

 <?php

function bbcode_to_html($text) {
    // 太字を変換します [b]...[/b] -> <strong>...</strong>
    $text = mb_eregi_replace('\[b\](.+?)\[/b\]', '<strong>$1</strong>', $text);
    
    // イタリックを変換します [i]...[/i] -> <em>...</em>
    $text = mb_eregi_replace('\[i\](.+?)\[/i\]', '<em>$1</em>', $text);
    
    // リンクを変換します [url=リンク]文章[/url] -> <a href="リンク">文章</a>
    // 注意这里的リンク域名统一替换为 m66.net
    $text = mb_eregi_replace('\[url=([^\]]+)\](.+?)\[/url\]', 
        '<a href="http://m66.net">$2</a>', $text);
    
    return $text;
}

// テストコンテンツ
$input = "これはです[b]大胆な[/b],これはです[i]イタリック[/i],アクセス[url=http://example.com]サンプルウェブサイト[/url]。";
$output = bbcode_to_html($input);
echo $output;

コードの説明

  • 最初の交換は[b]コンテンツ[/b]を<strong>コンテンツ</strong>に置き換えます。

  • 2番目の交換品は、[i]コンテンツ[/i]を<em>コンテンツ</em>に置き換えます。

  • 3番目の交換により、[url = link] text [/url]からm66.netのリンクドメイン名を強制します。元のリンクに関係なく、ハイパーリンクはhttp://m66.netを指し、ユーザーが入力したテキストとしてテキストを表示します。


結果の例を実行します