当我输入print_r($ response)时,我从服务器收到此响应:
{"success":true,"title_response":"SUCCESS","text_response":"any text"}}
我尝试过使用:
list($var1, $var2,$var3)=explode(",", $response);
但结果是:
$var1= {"success":true;
$var2= "title_response":"SUCCESS";
$var3= text_response":"any text"}};
我需要结果:
$var1= true;
$var2= "SUCCESS";
$var3= "any text";
有什么想法吗?
答案 0 :(得分:2)
它是一个JSON字符串,您可以使用json_decode
的组合转换为对象,然后使用get_object_vars
将对象的变量作为数组:
list($var1, $var2, $var3) = get_object_vars(json_decode($response));
echo $var2; // SUCCESS
如评论中所述,如果字符串是有效的JSON,这只会起作用。我在编写问题时假设有一个复制/粘贴错误,并且您确实拥有有效的JSON。
答案 1 :(得分:0)
您可以按如下方式解析它:
// Problem data (with unbalanced { }'s)
$response = '{"success":true,"title_response":"SUCCESS","text_response":"any text"}}';
// Remove trailing '}}'
$response = substr($response, 0, -2);
// Split on the commas
$temp = explode(',', $response);
// For each element in the array, split on the colon, and take second part
array_walk($temp, function(&$value) {
$value = explode(":", $value)[1];
});
// Distribute array into your variables
list($var1, $var2, $var3) = $temp;
但这是 非常 脆弱的代码。如果你的字符串中有逗号或冒号,它会以各种方式打破。
最好获得有效的JSON响应,并使用正确的JSON函数对其进行解析,如@Madbreaks所述。