0

我正在发出跨域 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]用于第二个对象。

4

1 回答 1

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)
于 2012-10-29T19:44:58.300 回答