2012-07-06 6 views
-1
내가 PHP Array 또는 JSON로 변환하는 구문 분석하는 것이 가능이

는 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'] 
    ]]] 
] 

같은 다른 웹 서비스에서 가져온 Array처럼 문자열을

에 "배열"을 포함하는 원시 문자열로 변환?

+0

은 무엇 다 지옥이 질문을 부결 트롤인가? – meddlesome

답변

1

ctrahey가 지적한 것처럼 유효한 작은 JSON이 되려면 작은 따옴표를 큰 따옴표로 바꿔야합니다. 그 (것)들을 선행하는 아무 것도없는 쉼표는 또한 가야한다.

// 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

마지막 블록의 빈 쉼표도 문제가 될 수 있습니다. –

+1

좋은 캐치, @ JohnC. 클린업 루틴을 null로 대체 할 필요가 있습니다. 아마도'[,'와'[null,'또는',,'을', null,'로 대체 할 것입니다 (@meddlesome에 대한 제안으로 –

+0

원래 데이터를 파싱하는 데 문제가 있습니다. 이제 작동 중입니다! John C and ctrahey – meddlesome