我正在尝试将json解码为PHP中的数组。但我的json就像
string(307) " string(290) "{"id":"1","name":"test name","rowno":"0","note":"test notes","created_date":"2016-05-01","updated_date":"2016-05-12 05:08:05"}" "
字符串中的字符串!! 如何将其转换为数组。
答案 0 :(得分:3)
这似乎是您尝试使用var_dump()
解码(或尝试输出)数据。这不是你需要的功能;你需要的是json_decode()
:
$data = json_decode($json);
如果这不是问题,并且您实际上正在接收上述数据,那么您必须将其删除 - 最有可能使用如下所示的正则表达式:
$s = 'string(307) " string(290) "{"id":"1","name":"test name","rowno":"0","note":"test notes","created_date":"2016-05-01","updated_date":"2016-05-12 05:08:05"}" "';
preg_match('/\{(.*)\}/', $s, $matches);
print_r($matches);
哪会返回您的json
:
Array
(
[0] => {"id":"1","name":"test name","rowno":"0","note":"test notes","created_date":"2016-05-01","updated_date":"2016-05-12 05:08:05"}
[1] => "id":"1","name":"test name","rowno":"0","note":"test notes","created_date":"2016-05-01","updated_date":"2016-05-12 05:08:05"
)
因此允许您在$matches
内正确解码。
正则表达式对我来说是一头野兽,所以我会尝试尽可能地解释表达式的作用:
\{
与第一个打开{
(.*)
匹配中间的任何字符\}
与结束}