2014-09-28 4 views
-1

프로그램에서 보관 파일이 있습니다. 배열로 PHP로로드 된이 보관 파일의 정보가 필요합니다.PHP 문자열을 배열로 변환

문자열의 아카이브 정보를 설정할 수는 있지만 배열로 변환 할 수 없습니다.

은 문자열입니다

archivedVars = 
{ 
    ["Default"] = 
    { 
     ["Name"] = 
     { 
      ["Name1"] = 
      { 
       ["@XXXXX"] = 
       { 
        ["show"] = true, 
        ["open"] = true, 
       }, 
      }, 
      ["Name2"] = 
      { 
       ["YYYYY"] = 
       { 
        ["show"] = true, 
        ["open"] = true, 
       }, 
      }, 
     }, 
    }, 
} 

은 어떻게되는 PHP 배열로 문자열을 변환 할 수 있습니다 ?

+1

왜 JSON이 유효을? –

답변

3

가장 좋은 방법은 어떤 형식이 사용되고 어떤 디코딩 라이브러리가 존재하는지 발견하는 것입니다.

그렇지 않으면 예를 들어를 사용하여 적절한 구문 분석기를 개발해야합니다. 상태 기계 또는 무언가.

구조가 게시되어 있고 구조의 정확성이 보장되는 경우 사용 가능한 라이브러리로 구문 분석 할 수 있습니다. JSON :

$str = preg_replace('#[[]("[^"]+")[]]\\s*=#', '\\1:', $str); 
$str = preg_replace('#,(\\s*})#', '\\1', $str); 
$str = preg_replace('#archivedVars =#', '', $str); 
$arr = json_decode($str, true); 

위 (당신이 HTML 구문 분석해서는 안됩니다 경우에도 - 또는 구조화 된 데이터 - regexps '에와을)를 걷기 배열을 얻을 것입니다 :

Array 
(
    [Default] => Array 
     (
      [Name] => Array 
       (
        [Name1] => Array 
         (
          [@XXXXX] => Array 
           (
            [show] => 1 
            [open] => 1 
           ) 

         ) 

        [Name2] => Array 
         (
          [YYYYY] => Array 
           (
            [show] => 1 
            [open] => 1 
           ) 
         ) 
       ) 
     ) 
) 
+0

잘 했어요! 나는 똑같은 것을 알아 내려고 노력했지만 나에게 너무 빨랐어! –

+0

THX for info ^^. – user3358149

관련 문제