私は最近、何らかのマークアップ(BB、Markdownなど)をサポートしたいと思っていました。約100年の間、BBCodeは何もされておらず、正式なマークアップのための正規表現パーサーを書くのは簡単ではないので、私は本当に素朴な骨の関数を書いてこれを行うだけです。
私のバージョンには、イメージ、コード、カラーサポート、ネストされたタグ([b][i]bold and italic[/i][/b]
)も含まれています。
function parseBBCode($string){
$search = array(
'/\[b\](.*?)\[\/b\]/',
'/\[i\](.*?)\[\/i\]/',
'/\[u\](.*?)\[\/u\]/',
'/\[img\](.*?)\[\/img\]/',
'/\[url\=(.*?)\](.*?)\[\/url\]/',
'/\[code\](.*?)\[\/code\]/',
'/\[color\=(.*?)\](.*?)\[\/color\]/'
);
$replace = array(
'<strong>\\1</strong>',
'<em>\\1</em>',
'<u>\\1</u>',
'<img src="\\1">',
'<a href="\\1" target="_blank">\\2</a>',
'<code>\\1</code>',
'<span style="color:\\1;">\\2</span>'
);
$new = preg_replace($search, $replace, $string);
return nl2br($new);
}