我正在制作跨域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]
之间的文本对于第二个对象。
答案 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)