2011-09-06 6 views
0

저는 PHP로 JSON 문자열을 구문 분석하기 위해 정말 고심하고 있습니다. 아래의 링크에는 구문 분석하려고하는 JSON이 포함되어 있습니다. http://finance.google.com/finance/info?client=ig&q=NASDAQ:MSFT,NASDAQ:GOOG,NASDAQ:AAPLPHP에서 JSON 구문 분석

누구든지 도움을 요청할 수는 있지만 아직 완전히 익숙하지 않습니다.

감사합니다.

+6

http://php.net/json_decode –

+1

무엇을 시도 했습니까? 여기를 보셨습니까 http://www.php.net/manual/en/function.json-decode.php – wgcrouch

+0

http://php.net/json_decode 그리고 아마도 콘텐츠의 첫 두 개 또는 세 문자를 자르십시오 먼저. – choise

답변

4

// 문자열의 시작에 // 사용

$json_data = '......'; 
$json_data = trim(substr($json_data,2)); 
$json_object = json_decode($json_data); 

결과

$json_data = '[ { "id": "358464" ,"t" : "MSFT" ,"e" : "NASDAQ" ,"l" : "25.80" ,"l_cur" : "25.80" ,"s": "1" ,"ltt":"4:00PM EDT" ,"lt" : "Sep 2, 4:00PM EDT" ,"c" : "-0.41" ,"cp" : "-1.56" ,"ccol" : "chr" ,"el": "25.44" ,"el_cur": "25.44" ,"elt" : "Sep 6, 4:35AM EDT" ,"ec" : "-0.36" ,"ecp" : "-1.40" ,"eccol" : "chr" ,"div" : "0.16" ,"yld" : "2.48" } ,{ "id": "694653" ,"t" : "GOOG" ,"e" : "NASDAQ" ,"l" : "524.84" ,"l_cur" : "524.84" ,"s": "0" ,"ltt":"4:00PM EDT" ,"lt" : "Sep 2, 4:00PM EDT" ,"c" : "-7.66" ,"cp" : "-1.44" ,"ccol" : "chr" } ,{ "id": "22144" ,"t" : "AAPL" ,"e" : "NASDAQ" ,"l" : "374.05" ,"l_cur" : "374.05" ,"s": "1" ,"ltt":"4:00PM EDT" ,"lt" : "Sep 2, 4:00PM EDT" ,"c" : "-6.98" ,"cp" : "-1.83" ,"ccol" : "chr" ,"el": "371.45" ,"el_cur": "371.45" ,"elt" : "Sep 6, 6:02AM EDT" ,"ec" : "-2.60" ,"ecp" : "-0.70" ,"eccol" : "chr" ,"div" : "" ,"yld" : "" } ]'; 
$json_object = json_decode($json_data); 

를 사용하지있을 경우

array (
    0 => 
    stdClass::__set_state(array(
    'id' => '358464', 
    't' => 'MSFT', 
    'e' => 'NASDAQ', 
    'l' => '25.80', 
    'l_cur' => '25.80', 
    's' => '1', 
    'ltt' => '4:00PM EDT', 
    'lt' => 'Sep 2, 4:00PM EDT', 
    'c' => '-0.41', 
    'cp' => '-1.56', 
    'ccol' => 'chr', 
    'el' => '25.44', 
    'el_cur' => '25.44', 
    'elt' => 'Sep 6, 4:35AM EDT', 
    'ec' => '-0.36', 
    'ecp' => '-1.40', 
    'eccol' => 'chr', 
    'div' => '0.16', 
    'yld' => '2.48', 
)), 
    1 => 
    stdClass::__set_state(array(
    'id' => '694653', 
    't' => 'GOOG', 
    'e' => 'NASDAQ', 
    'l' => '524.84', 
    'l_cur' => '524.84', 
    's' => '0', 
    'ltt' => '4:00PM EDT', 
    'lt' => 'Sep 2, 4:00PM EDT', 
    'c' => '-7.66', 
    'cp' => '-1.44', 
    'ccol' => 'chr', 
)), 
    2 => 
    stdClass::__set_state(array(
    'id' => '22144', 
    't' => 'AAPL', 
    'e' => 'NASDAQ', 
    'l' => '374.05', 
    'l_cur' => '374.05', 
    's' => '1', 
    'ltt' => '4:00PM EDT', 
    'lt' => 'Sep 2, 4:00PM EDT', 
    'c' => '-6.98', 
    'cp' => '-1.83', 
    'ccol' => 'chr', 
    'el' => '371.45', 
    'el_cur' => '371.45', 
    'elt' => 'Sep 6, 6:02AM EDT', 
    'ec' => '-2.60', 
    'ecp' => '-0.70', 
    'eccol' => 'chr', 
    'div' => '', 
    'yld' => '', 
)), 
) 

json_decode 문서 : http://php.net/json_decode

0

소스에서 JSON을 주석 처리합니다. 그들이 그것을하는 것은 꽤 이상하다. 그러나 어떻게해서든지 처음에는 그것을 // 망치고있다.

$url = 'http://finance.google.com/finance/info?client=ig&q=NASDAQ:MSFT,NASDAQ:GOOG,NASDAQ:AAPL'; 
$json = preg_replace('#^\s+//#', '', file_get_contents($url)); 
$decoded = json_decode($json); 
var_dump($decoded); 
+0

,'substr ($ json_data, 2)'충분, 조금 과부하 것 ... – feeela

+0

당신은 당신을 생각하지 않을까요? 그러나 그렇지 않습니다. trim()은 불필요한 함수입니다. –

+0

regex - 그것을 사용하거나 느슨하게 :) –