2017-02-03 2 views
0

Как разбить строку в ключевые пары значений для вставки в к базе данныхКак установить srting в ключевые пары значений

jsonis = {"foe_tat":"08:33:00","stateId":"up","uid":"17","comment":"","caseId":"mMJjyqPsVK","applicantId":"0","photo":"","questions":"{34=[{rem=, ans=No}], 46=[{rem=, ans=gbo}], 48=[{rem=, ans=NA}], 29=[{rem=, ans=No}], 45=[{rem=, ans=gfi}], 49=[{rem=, ans=Non Serviceable}], 43=[{rem=, ans=1 BHK}], 35=[{rem=, ans=Society Board}], 38=[{rem=, ans=gghi}], 39=[{rem=, ans=fcdr}], 27=[{rem=, ans=ffji}], 41=[{rem=, ans=Others}], 52=[{rem=test remark 2, ans=ggivvju}], 47=[{rem=Test remarks for feedback, ans=ggijcf}], 31=[{rem=, ans=Chawl}], 37=[{rem=, ans=Self Owned}], 33=[{rem=, ans=Others}], 30=[{rem=, ans=gfhi}], 50=[{rem=, ans=gcogv}], 51=[{rem=test remarks, ans=gcgicd}], 32=[{rem=, ans=NA}], 44=[{rem=, ans=[Refrigerator, Airconditioner]}]}"}

Я хочу только вопросы массива

$string= 
"34={rem=1, ans=No}, 
46={rem=2, ans=hddg}, 
48={rem=a, ans=NA}, 
29={rem=s, ans=Yes}, 
45={rem=d, ans=gydg}, 
49={rem=f, ans=InConclusive}, 
43={rem=g, ans=1 BHK}, 
35={rem=q, ans=Society Board}, 
38={rem=r, ans=34}, 
39={rem=6, ans=9}, 
27={rem=6, ans=yes}, 
41={rem=6, ans=Others}, 
52={rem=test remark 2, ans=gifvkj}, 
47={rem=Test remarks for feedback, ans=hhgghi}, 
31={rem=6, ans=Slum}, 
37={rem=6, ans=Self Owned}, 
33={rem=6, ans=Village}, 
30={rem=6, ans=gjhxfh}, 
50={rem=6, ans=gifxhj}, 
51={rem=test remarks, ans=tdjigf}, 
32={rem=6, ans=NA}, 
44={rem=6, ans=[Refrigerator, Airconditioner, Television]}"; 

ожидается выход

key=34 rem=1 ans=no 
key=46 rem=2 ans=hddg 
key=48 rem=a ans=NA 

так далее .. с помощью любого цикла

+1

Как вы можете видеть ваш код шаблона и это строка не только JSON –

+0

да строка. –

+0

Откуда взялась строка? Есть ли причина в том, что это в этом доморощенном формате? Не могли бы вы использовать правильный JSON или YAML? – edcs

ответ

1

Вы можете попробовать это:

$string="";//your string 
$string=str_replace("]}","]",$string); 
$arr=explode("},",str_replace("={rem=",",",$string)); 

foreach($arr as $key=>$value){ 
    $str=explode(",",$value); 
    $data[$key]["key"] = intval($str[0]); 
    $data[$key]["rem"] = $str[1]; 
    $data[$key]["ans"] = explode("ans=", $value)[1]; 
} 
echo "<pre>"; 
print_r($data); 

DEMO

0
<?php 
$string= 
"34={rem=1, ans=No}, 
46={rem=2, ans=hddg}, 
48={rem=a, ans=NA}, 
29={rem=s, ans=Yes}, 
45={rem=d, ans=gydg}, 
49={rem=f, ans=InConclusive}, 
43={rem=g, ans=1 BHK}, 
35={rem=q, ans=Society Board}, 
38={rem=r, ans=34}, 
39={rem=6, ans=9}, 
27={rem=6, ans=yes}, 
41={rem=6, ans=Others}, 
52={rem=test remark 2, ans=gifvkj}, 
47={rem=Test remarks for feedback, ans=hhgghi}, 
31={rem=6, ans=Slum}, 
37={rem=6, ans=Self Owned}, 
33={rem=6, ans=Village}, 
30={rem=6, ans=gjhxfh}, 
50={rem=6, ans=gifxhj}, 
51={rem=test remarks, ans=tdjigf}, 
32={rem=6, ans=NA}, 
44={rem=6, ans=[Refrigerator, Airconditioner, Television]}"; 

$string_to_array = explode("\n", $string); 
$data = []; 
for ($i = 0; $i < count($string_to_array); $i++) { 
    $data[$i]["key"] = explode("={", $string_to_array[$i])[0]; 
    $data[$i]["rem"] = explode("rem=", explode(",", $string_to_array[$i])[0])[1]; 
    $data[$i]["ans"] = rtrim(str_replace("}","",explode("ans=", $string_to_array[$i])[1]), ","); 
} 
var_dump($data); 
Смежные вопросы