2013-02-28 62 views
1

我有一個多維數組的這種形式的輸出:文件內容多維數組

Array 
(
[MiddleName] => de 
[FirstName] => Lianne 
[Id] => 2937 
[LastName] => Natris 
) 
Array 
(
[MiddleName] => de 
[FirstName] => Herman 
[Id] => 2215 
[LastName] => Groot 
) 

我有f **通過API打cked了用戶數據,所以我現在需要解決它。這個輸出是我剩下的唯一正確的數據。 API更新功能的工作原理如下:

$grp = array('LastName' => 'John', 'MiddleName' => 'van'); 
$rID = $app->dsUpdate("Contact", $cID, $grp); 

我該如何解析這個輸出回到多數組?我的正則表達式的認識非常有限:((

在此先感謝

+0

你爲什麼輸出會這樣?或者你從外部獲得它?我有一種感覺,你可能會做非常低效的事情。 – kba 2013-02-28 02:09:52

+0

你想要的結果是什麼? – michi 2013-02-28 02:10:18

+0

@kba不幸的是,這是我擁有的唯一渠道 – kiri 2013-02-28 02:23:31

回答

0

print_r()輸出是不是真的適合「反向工程」的原始結構

如果你想只是工作。字符串表示,你可以使用該serialize()unserialize()代替。

// turn array into a string format 
$str = serialize($arr); 

// get it back into an array 
var_dump(unserialize($str)); 

你也可以看看var_export(),如果你想結構寫入腳本文件(如簡單緩存)或json_encode()json_decode()(如果該結構需要與JavaScript共享)。

更新

如果你真的別無選擇:

$arrays = array(); 
if (preg_match_all('/^Array\s*\((.*?)\)/ms', $s, $matches)) { 
    foreach ($matches[1] as $match) { 
    if (preg_match_all('/\[([^]]+)\] => (.*)/', $match, $params)) { 
     $arrays[] = array_combine($params[1], $params[2]); 
    } 
    } 
    print_r($arrays); 
} else { 
    die("Arrrrgh"); 
} 

Demo

+0

傑克,你的正則表達式黑客工作就像一個魅力!謝謝你救我的屁股! :) – kiri 2013-02-28 02:45:14