2014-09-28 185 views
-1

我有一個程序存檔,我需要這個存檔的信息加載到php中作爲數組。PHP將字符串轉換爲數組

我可以在一個字符串中設置檔案的信息,但我不能將其轉換爲數組。

這是字符串:

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

我怎麼能這個字符串轉換成PHP數組?

+1

爲什麼是JSON無效? – 2014-09-28 23:31:06

回答

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 - 或結構化數據 - 用正則表達式),將產生一個適合步行的數組:

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

         ) 

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

好工作!我試圖弄清楚,但對我來說太快了! – 2014-09-28 23:50:21

+0

THX的信息^^。 – user3358149 2014-09-29 00:05:49