拆分以获取分隔符之间的文本?

时间:2012-10-29 19:41:17

标签: javascript jquery

我正在制作跨域AJAX请求,因此,我无法将原始数组从PHP页面传递到我的HTML页面。相反,请求将结果作为字符串获取。我设置它,以便语法如下所示:

([SCHOOL] Name [/SCHOOL][STATUS] Status [/STATUS])
([SCHOOL] Other name [/SCHOOL][STATUS] Other status [/STATUS])

在我的HTML页面上,我希望能够以下列形式从这些不同的值形成数组:

Array (
    [0] =>
        [0] Name
        [1] Other
    [1] =>
        [0] Name 
        [1] Other status
)

这样,我可以使用for循环来获取特定值。

唯一的问题是split只会这样做,分裂事物。 JS中有没有办法在分隔符中查找文本,并从中形成数组?再次在示例中,它会在括号内找到所有文本,并形成第一个数组,然后在该数组中,使用[SCHOOL][/SCHOOL]之间的文本作为第一个对象,并使用[STATUS][/STATUS]之间的文本对于第二个对象。

1 个答案:

答案 0 :(得分:1)

理想情况下,您可以使用更适合在服务器端存储数组的内容。我会推荐JSON。使用php进行编码并使用javascript进行解码将是微不足道的。

如果您没有该选项服务器端,则可以使用正则表达式来解析文本。但是,您必须确保内容中没有分隔符。

目前尚不清楚如何从源代码中获取目标数据结构,但我希望这样的内容对您有用:

str = "([SCHOOL] Name [/SCHOOL][STATUS] Status [/STATUS])\n\
([SCHOOL] Other name [/SCHOOL][STATUS] Other status [/STATUS])"

arr  =[]
m = str.match(/\(.+?\)/g)
for(i in m){
    matches = m[i].match(/\(\[SCHOOL\](.+?)\[\/SCHOOL\]\[STATUS\](.+?)\[\/STATUS\]\)/)
    arr.push([matches[1],matches[2]])
}

console.dir(arr)