2011-05-21 19 views
0

。例えば详细BBcode解析問題

[color=rgb(102, 0, 102)]H[color=rgb(204, 0, 0)]e[/color]llo[/color] 

結果は次のとおりです。

<span style="color:rgb(102, 0, 102)">H[color=rgb(204, 0, 0)]e</span>llo[/color] 

あなたが見ることができるように、最初の[色= ...] [/色]はに変換されていますhtml。 2番目はそのままです。何か案は?

+0

このような再帰的な構造が必要な場合は、単純な 'preg_replace'よりも少し複雑なものを使用する必要があります。 Regexpは階層をうまく処理しません。 –

+0

ネット上には何百万もの無料スクリプトがありますが、何日も過ごしても問題なく動作する良いbbcodeパーサを見つけることができません:( – tfe

答えて

0

指定したとおりに正しく動作しています。問題は組み込みシーケンスにあります。 2つの置換を実行することをお勧めします。 1つは開始タグ用で、もう1つは終了タグ用です。 開始タグのすべてを最初に指定し、末尾タグの末尾にある置換タグの最後の文字を にすることもできます。 これは検索置換の値をもっと簡単にします。ほとんどの場合、特に[b]のような単純なタグの場合、 はバックリファレンスを使用する必要はありません。 これで問題は解決します。

+0

そして、いくつかの無名のユーザがbbcodeタグを正しく閉じないようにHTMLを壊します。 –

+0

Matti Virkkunen、はい、それは問題です!bbcodeタグを閉じることができないユーザーもいます。 – tfe