不久之后我通过一些API获取了大量数据,并将其保存到一个简单的var_dump或print_r的平面文件中.现在我正在寻找处理数据,每一行看起来像:
” ‘middle_initial’ => ”, ‘sid’ => ‘1419843’, ‘fixed’ => ‘Y’,
‘cart_weight’ => ‘0’, ‘key’ => ‘ABCD’, ‘state’ => ‘XX’, ‘last_name’
=> ‘Mnop’, ’email’ => ‘abc@example.com’, ‘city’ => ‘London’,
‘street_address’ => ‘Sample’, ‘first_name’ => ‘Sparsh’,”
现在我需要将这些数据恢复为数组格式.有没有办法可以做到这一点?
解决方法:
首先用explode()
函数爆炸字符串,使用’,’作为分隔符:
$str = "'middle_initial' => '', 'sid' => '1419843', 'fixed' => 'Y', 'cart_weight' => '0', 'key' => 'ABCD', 'state' => 'XX', 'last_name' => 'Mnop', 'email' => 'abc@example.com', 'city' => 'London', 'street_address' => 'Sample', 'first_name' => 'Sparsh',";
$items = explode(', ', $str);
var_dump($items);
哪个会让你看起来像这样的数组:
array
0 => string ''middle_initial' => ''' (length=22)
1 => string ''sid' => '1419843'' (length=18)
2 => string ''fixed' => 'Y'' (length=14)
3 => string ''cart_weight' => '0'' (length=20)
...
然后,迭代该列表,匹配=>的每一侧的每个项目,并使用=>的第一侧.作为结果数据的关键,第二个作为值:
$result = array();
foreach ($items as $item) {
if (preg_match("/'(.*?)' => '(.*?)'/", $item, $matches)) {
$result[ $matches[1] ] = $matches[2];
}
}
var_dump($result);
哪能得到你:
array
'middle_initial' => string '' (length=0)
'sid' => string '1419843' (length=7)
'fixed' => string 'Y' (length=1)
'cart_weight' => string '0' (length=1)
...
但是,严肃地说,你不应该以如此糟糕的格式存储数据:print_r()用于显示数据,用于调试目的 – 不存储它以后再重新加载它!
如果要将数据存储到文本文件,请使用serialize()
或json_encode()
,它们可以分别使用unserialize()
或json_decode()进行恢复.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。