什么第一爆炸字符串与explode()
功能,采用', '
作为分隔符:
$str = "'middle_initial' => '', 'sid' => '1419843', 'fixed' => 'Y', 'cart_weight' => '0', 'key' => 'ABCD', 'state' => 'XX', 'last_name' => 'MNOP', 'email' => '[email protected]', '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);
这将让你:
但是,严重的是,你不应该将数据存储在这样一个可怕的格式:print_r()
进行到显示数据,为了调试的目的 - 不要存储它以后重新加载它!
如果你想将数据存储到一个文本文件,使用serialize()
或json_encode()
,它可以同时分别使用unserialize()
或json_decode()
,可以恢复。
如果这是一次性的事情,您可以将其复制并粘贴到文件中并让PHP解析它。否则,你可能会考虑'eval()',但如果你这样做的话要非常小心。 – Brad
那么,如果你可以再次从api中获取数据,那么显而易见的解决方案就是将你的保存过程修改为'serialize()'数组,然后你只需要获取文件的文本并执行'unserialize($ text)'' – prodigitalson