如何制作一个bbcode解码器,将html结束标签转换为他们开始的bbcode结束标签?

时间:2013-06-04 01:13:31

标签: javascript html tags bbcode

我有一些javascript会转 [b]test[/b]<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]")
;
}

每个span结束标记都需要被解释为它开始的bbcode结束标记,但没有办法区分它们。我尝试在最终标签中放置类,但是firefox不允许它。

1 个答案:

答案 0 :(得分: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-->')
;
}