PHP preg_split和替换

时间:2013-05-17 22:13:04

标签: php json

我目前正在运行此代码。它正在拆分变量$ json,其中有},{但它也删除了这些字符,但实际上我需要json_decode函数的尾随和前导括号才能工作。我创造了一个工作,但想知道是否有更优雅的解决方案?

<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5},{"a":1,"b":2,"c":3,"d":4,"e":5}';
$individuals = preg_split('/},{/',$json);

$loop_count =1;
foreach($individuals as $object){
    if($loop_count == 1){$object .='}';}
    else{$object ="{".$object;}
    print_r(json_decode($object));
    echo '<br />';
$loop_count++;
}
?>

编辑: $ json变量实际上是作为json对象检索的。一个恰当的例子是

  

[{ “ID”: “foo” 的, “行”:1, “栏”:1, “高度”:4 “宽度”:5},{ “ID”: “棒”, “行” :2中, “栏”:3, “高度”:4 “宽度”:5}]

2 个答案:

答案 0 :(得分:4)

正如你(大概)已经知道的那样,由于逗号和两个对象,你必须开始的字符串是无效的json;它基本上是两个json字符串,它们之间有一个逗号。

你试图通过拆分来解决这个问题,但是有一个更简单的方法可以解决这个问题:

解决方法只是将字符串包装在方括号中,将字符串转换为有效的JSON:

$json = '[' . $json . ']';

瞧。该字符串现在是有效的json,只需调用json_decode()即可成功解析。

希望有所帮助。

答案 1 :(得分:0)

您可以随时重新添加它们。 试试这个:

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5},{"a":1,"b":2,"c":3,"d":4,"e":5}';
$individuals = preg_split('/},{/',$json);

foreach($individuals as $key=>$val)
   $individuals[$key] = '{'.$val.'}';