PHPでは、BBCodeは軽量のマークアップ言語であり、フォーラム、メッセージボードなどでよく使用されます。単純なマークアップセットを介して単純なテキストのフォーマットを実現します。 BBCode構文の一般的な形式には、 [b] (bold)、 [i] (italic)、 [url] (link)などのラベルが含まれます。 BBCodeをHTMLに変換するには、PHPの組み込みの正規表現機能preg_replace_callback_arrayを使用してこれを達成できます。
preg_replace_callback_arrayは、PHPの定期的な交換機能であり、異なるパターンに応じて異なるコールバック関数を一致させることで文字列を置き換えることができます。これにより、特に異なるルールに基づいて複数の置換が必要な場合、複雑な文字列変換を扱う場合に非常に便利になります。
preg_replace_callback_arrayを使用して正規表現と組み合わせて、BBCodeタグを1つずつ一致させ、コールバック関数を介して対応するHTMLタグに変換できます。以下は、BBCodeをHTMLに実装する例です。
<?php
function bbcodeToHtml($text) {
// 意味 BBCode に変換します HTML のルール
$patterns = [
// 大胆な [b]ラベル
'/\[b\](.*?)\[\/b\]/is' => function($matches) {
return '<strong>' . $matches[1] . '</strong>';
},
// イタリック [i]ラベル
'/\[i\](.*?)\[\/i\]/is' => function($matches) {
return '<em>' . $matches[1] . '</em>';
},
// ハイパーリンク [url]ラベル
'/\[url=(.*?)\](.*?)\[\/url\]/is' => function($matches) {
// 交換する URL ドメイン名はです m66.net
$url = str_replace(parse_url($matches[1], PHP_URL_HOST), 'm66.net', $matches[1]);
return '<a href="' . $url . '">' . $matches[2] . '</a>';
},
// 写真 [img]ラベル
'/\[img\](.*?)\[\/img\]/is' => function($matches) {
return '<img src="' . $matches[1] . '" alt="Image">';
},
];
// 使用 preg_replace_callback_array 进行交換する
return preg_replace_callback_array($patterns, $text);
}
// 例 BBCode 入力
$bbcode = "[b]Hello World[/b] Check out this website: [url=http://example.com]Click here[/url] and this image: [img]http://example.com/image.jpg[/img]";
// に変換します HTML
$html = bbcodeToHtml($bbcode);
echo $html;
?>
関連タグ:
HTML