1

我有一个这种形式的多维数组的输出:

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

我已经通过玩 API 搞砸了用户数据,所以我现在需要修复它。这个输出是我留下的唯一正确的数据。API 更新功能的工作原理如下:

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

如何将此输出解析回多数组?我对正则表达式的了解非常有限:((

提前致谢!

4

1 回答 1

0

的输出print_r()并不真正适合对原始结构进行“逆向工程”。

如果您只想使用字符串表示,则可以使用serialize()andunserialize()代替。

// 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");
}

演示

于 2013-02-28T02:20:17.427 回答