2016-12-17 2 views
0

Как расколоть следующую строку, разделенную разделителем ',' на массив в PHP?php split string с повторным разделителем

Строка:

[{"sku":"PAP","name":"Butter","price":23,"quantity":2},{"sku":"PER","name":"Garlic","price":25,"quantity":1}] 

Обязательный массив:

$array[0]= "sku":"PAP","name":"Butter","price":23,"quantity":2 

$array[1]= "sku":"PER","name":"Garlic","price":25,"quantity":1 

Я не в состоянии расколоть на основе разделителем '' так как он присутствует в элементах массива.

+2

Строка очень похожа на JSON. Поэтому вы должны использовать функцию 'json_decode':' $ array = json_decode ($ json, true); ' –

+0

Здесь вы должны использовать парсер JSON, а не регулярное выражение. Более того, если JSON вложен. –

ответ

0

@ Руслан Османов прав. Просто декодируйте, как JSON.

<?php 
    $a='[{"sku":"PAP","name":"Butter","price":23,"quantity":2},{"sku":"PER","name":"Garlic","price":25,"quantity":1}]'; 
    print_r(json_decode($a)); 
?> 

Результат:

Array 
(
    [0] => stdClass Object 
     (
      [sku] => PAP 
      [name] => Butter 
      [price] => 23 
      [quantity] => 2 
     ) 

    [1] => stdClass Object 
     (
      [sku] => PER 
      [name] => Garlic 
      [price] => 25 
      [quantity] => 1 
     ) 

) 
+0

Спасибо, что помогает. Не могли бы вы также предложить мне, как назначить каждый элемент массиву. Я не могу получить доступ к отдельным элементам декодированной строки json – Arun

0

Во-первых, удалить ненужные символы:

$str=str_replace("[{","",$str); 
$str=str_replace("}]","",$str); 

Затем рассек:

$array=preg_split("},{",$str); 
0

строка выглядит в формате JSON, так что используйте, пожалуйста, json_decode() метод php.