Как насчет того, чтобы сначала взорвать строку с помощью функции 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()
соответственно.