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]し、2 番目のオブジェクトに間のテキストを使用します。

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 に答える