PHPでテキストのフォーマットを扱う場合、BBCode(簡略化されたマークアップ言語)がよく使用されます。これにより、ユーザーは、単純なタグを使用して、太字、イタリック、リンクなどのテキストスタイルを追加できます。この記事では、 MB_EREGI_REPLACE関数を使用してシンプルなカスタムBBCodeコンバーターを構築して、BBCodeタグを対応するHTMLタグに変換する方法を示します。
MB_EREGI_REPLACEは、マルチバイト文字列のPHPの正規表現置換機能であり、症例感受性マッチングをサポートします。その利点は、UTF-8などのマルチバイトエンコードされたテキストを正しく処理できることです。これは、中国の環境でのテキスト処理に非常に適しています。
関数プロトタイプ:
mb_eregi_replace(string $pattern, string $replacement, string $string): string
$パターン:マッチパターン(正規表現)
$の交換:コンテンツを交換します
$文字列:保留中の文字列
次の例は、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を指し、ユーザーが入力したテキストとしてテキストを表示します。