我有以下字符串。
$json = '
insert: [
{ table:" abc",values:{id:1,text:" lorem ipsum "} },
{ table : "cde " , values : { id : 2 , firstname : "lorem ipsum dolor sit " } }
]
';
已经尝试使用下面的正则表达式,但结果不是预期的。
$json = preg_replace('~\s{1,}~', '', $json);
我希望得到以下回报
{"insert": [{"table": "abc", "values": {"id": 1, "text": "lorem ipsum"}}, {"table": "cde", "values": {"id": 2, "text": "lorem ipsum dolor sit"}}]}
然后使用 json_decode()
我希望我一直很清楚
更新
我有以下字符串。
示例:
$json_string = '
insert: [
{ table:" abc",values:{id:1,text:" lorem ipsum "} },
{ " table " : "cde " , " values" : { id : 2 , firstname : "lorem ipsum dolor sit " } }
]
';
我想要以下输出
$json_replaced = '{"insert": [{"table": "abc", "values": {"id": 1, "text": "lorem ipsum"}}, {"table": "cde", "values": {"id": 2, "text": "lorem ipsum dolor sit"}}]}';
答案 0 :(得分:1)
难道你不能只运行以下内容:
$ json_string = preg_replace(“/ \ s {2,} /”,“”,$ json_string);
输出是:
insert: [{ table:" abc",values:{id:1,text:" lorem ipsum "} },{"table":"cde ","values":{ id: 2, firstname:"lorem ipsumdolor sit" } }]
答案 1 :(得分:0)
以下应该适合你:
$json = '
insert: [
{ table:" abc",values:{id:1,text:" lorem ipsum "} },
{ table : "cde " , values : { id : 2 , firstname : "lorem ipsum dolor sit " } }
]
';
$json = '{' . $json . '}';
$json = preg_replace(array('/ *\n */', '/(?<=[{,]) *([^\s:]+) *: */'),
array("", '"$1": '), $json);
echo $json; // converted json string
print_r(json_decode($json, true)); // decoded array
<强>输出:强>
{"insert": [{"table": " abc","values": {"id": 1,"text": " lorem ipsum "} },{"table": "cde " ,"values": {"id": 2 ,"firstname": "lorem ipsum dolor sit " } }]}
Array
(
[insert] => Array
(
[0] => Array
(
[table] => abc
[values] => Array
(
[id] => 1
[text] => lorem ipsum
)
)
[1] => Array
(
[table] => cde
[values] => Array
(
[id] => 2
[firstname] => lorem ipsum dolor sit
)
)
)
)