0

[b]test[/b] に変わる JavaScriptがいくつかあります <span class="bbcode_bold">test</span>

また、これ は次の[i]test 2[/i] ようになります 。<span class="bbcode_italic">test</span>

それはうまくいきますが、それもデコードできる必要があります。すべてが同じ終了タグを持つ複数のタイプの bbcode を使用して、開始タグとして開始された bbcode タグとして終了タグを識別する方法をどのように理解できますか?

編集: bbcode を含むテキストを解析するために使用するコード:

function bbencode(input){
return input
.replace(/\n/ig, '<br/>')
.replace(/\[b\]/ig, '<span class="bbcode_bold">')
.replace(/\[\/b\]/ig, '</span>')
.replace(/\[i\]/ig, '<span class="bbcode_italic">')
.replace(/\[\/i\]/ig, '</span>')
;
}

私の問題はデコーダにあります:

function bbdecode(input){
return input
.replace(/\n/ig, "<br/>")
.replace(/<span class="bbcode_bold">/ig, "[b]")
.replace(/<\/span>/ig, "[/b]")
.replace(/<span class="bbcode_italic">/ig, "[i]")
.replace(/<\/span>/ig, "[/i]")
;
}

すべてのスパン終了タグは、それが開始した bbcode 終了タグとして解釈される必要がありますが、違いを見分ける方法はありません。終了タグにクラスを入れてみましたが、firefox では許可されていません。

4

1 に答える 1

2

タグの後にコメントを付けて、それをテストできます。たとえば、次のようになります。

function bbencode(input){
    return input
    .replace(/\n/ig, '<br/>')
    .replace(/\[b\]/ig, '<span class="bbcode_bold">')
    .replace(/\[\/b\]/ig, '</span><!--BOLD-->')
    .replace(/\[i\]/ig, '<span class="bbcode_italic">')
    .replace(/\[\/i\]/ig, '</span><!--ITALIC-->')
;
}
于 2013-06-04T05:03:18.433 に答える