2012-07-06 39 views
-1

我有串看起來像Array從其他Web服務獲取這樣轉換包含「陣列」到PHP數組或JSON

[ 
    [ 
     [189, 'Brazil Serie A', 0, ''], 
     [ 
      [1053230, 'Flamengo', 'Atletico Goianiense', '1.196', 10, '07/02/2012 04:30', 0, 9, 1, 0, '', 0] 
     ], 
     [0, [ 
      [10770901, 0, 5000.00], 
      [1, 17988654, '-0.78', '0.70', '1.0', 1], 
      [3, 17965783, '0.97', '0.93', '2.5-3'], 
      [7, 17965787, '-0.89', '0.77', '0.50', 1], 
      [9, 17965789, '0.70', '-0.82', '1.0'] 
     ]] 
    ], 
    [, , [0, [ 
     [10748028, 0, 3000.00], 
     [1, 17965781, '0.85', '-0.93', '0.5-1', 1], 
     [3, 17988655, '0.79', '-0.89', '2.50'] 
    ]]] 
] 

是否可以解析到PHP Array或轉換爲JSON原始字符串?

+0

什麼大赫克說巨魔否決了這個問題? – meddlesome 2012-07-06 05:33:34

回答

1

正如ctrahey指出的那樣,單引號需要換成雙引號才能生效。沒有任何前面的逗號也必須去。

// quote to double quote     
$input = str_replace("'", '"', $input);     

// remove empty commas 
$input = preg_replace('/,\s*,/', ',', $input);   
$input = preg_replace('/\[\s*,/', '[', $input); 

$output = json_decode($input)); 

我試圖保持它的簡單,並建立在一個小的靈活性。

1

嗯,乍一看......如果你把你的單引號轉換成雙引號,你已經有了JSON。我換了大約一半,通過這一點驗證了。

有關詳細信息,請參見the spec,但實際上這只是一堆數組。字符串的雙引號要求在此清楚陳述,其餘的看起來沒問題。

+2

最終塊中的空逗號也似乎是一個問題 – 2012-07-06 04:11:46

+1

好抓,@JohnC。清理例程需要用null來替換它們,可能匹配'[,'並且用'',null'替換爲'[null,'或','(作爲@meddlesome的建議 – 2012-07-06 04:14:41

+0

)感謝指出解析原始數據的問題,現在正在工作!John C和ctrahey – meddlesome 2012-07-06 05:54:52