如何通过JavaScript将[list] BBCode转换为HTML?

时间:2012-09-24 02:09:52

标签: javascript html list bbcode

我正在通过JavaScript将BBCode写入HTML praser。我用[b],[i],[img],...标签成功,但是用[list]标签,我不知道怎么做,因为它的元素可能是2,3,n,... Can你帮我转换自:

[list]
item 1
item 2
item 3
[/list]

<ul>
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
<ul>

非常感谢。

1 个答案:

答案 0 :(得分:1)

如果你正在使用@Dai正在讨论的indexOfsplitsubstring这种可怕的组合,那么类似于以下的内容将会这样做。

var start = this.value.indexOf("[list]"),
    ending = this.value.indexOf("[/list]"),
    lines = this.value.substring(start + 7, ending - 1).split("\n");

//perform loop on `lines`:
//    "<li>" + lines[i] + "</li>"

基本上,这将获得[list][/list]的起始位置,然后获取它们之间的线。您会注意到在substring()中,我说start+7ending-1。这可以通过以下事实来解释:实际行的起始位置将是索引[list] + 字符串的实际长度[list] + 输入字符。结束减去一个以删除输入字符。更好的方法是简单地添加6来启动而不是7,减去零,然后只删除任何空数组值,但是,这两种方式都可以,具体取决于您需要为用户提供的确切语法。

请记住,lines变量将保存在两个列表bbcode之间输入的所有行,这意味着您必须遍历它们,然后用<li></li>标记包装它们。此外,我建议验证多项内容,例如确保start > ending并多次执行此操作,以便您知道[list]的每次出现,而不仅仅是第一次出现。