PHP preg_替换JSON内容的一部分

PHP preg_替换JSON内容的一部分,php,json,Php,Json,我得到了以下JSON字符串: { "time":"321321545646", "documents":[ {"name":"name1","body":"HASH_BASE64 1"}, {"name":"name2","body":"HASH_BASE64 2"} ] } 在实际生产使用中,“HASH BASE64”将是BASE64编码的字符串。 如何用string=“LONGSTRING”替换每个body”标记的内容,以接收如下内容

我得到了以下JSON字符串:

{
    "time":"321321545646",
    "documents":[
        {"name":"name1","body":"HASH_BASE64 1"},
        {"name":"name2","body":"HASH_BASE64 2"}
    ]
}
在实际生产使用中,“HASH BASE64”将是BASE64编码的字符串。 如何用string=“LONGSTRING”替换每个body”标记的内容,以接收如下内容:

{
    "time":"321321545646",
    "documents":[
        {"name":"name1","body":"LONGSTRING"},
        {"name":"name2","body":"LONGSTRING"}
    ]
}

您可能不应该使用正则表达式,而是通过解码、更改数据并再次编码:

$data=json\u decode($json);
对于($i=0;$idocuments);$i++){
$data->documents[$i]->body=“LONGSTRING”;
}
$json=json_encode($data);

您不应该使用正则表达式来修改JSON数据-PHP具有解析和编码JSON数据的本机函数。看


您不需要
preg-replace()
只需通过
json\u Decode()解码json即可

然后循环浏览json文档并更改每个文档数据,如下所示:

$json = json_decode('{
    "time":"321321545646",
    "documents":[
        {"name":"name1","body":"HASH_BASE64 1"},
        {"name":"name2","body":"HASH_BASE64 2"}
    ]
}');
foreach ($json->documents as $document){
    $document->body = "LONGSTRING";
}
dump($json);
这是输出:

{#229 ▼
  +"time": "321321545646"
  +"documents": array:2 [▼
    0 => {#228 ▼
      +"name": "name1"
      +"body": "LONGSTRING"
    }
    1 => {#227 ▼
      +"name": "name2"
      +"body": "LONGSTRING"
    }
  ]
}

绝对不能使用
preg_replace
将JSON解码为数组,修改值,用于将其编码回JSON。@MacBooc与JSON有何关系?您链接的问题?我的坏想法是使用正则表达式检测字符串中的base64,而我在标题中看到preg_replace。这是我希望使用正则表达式的一个原因:此JSON是通信日志的一部分,我希望在不做任何更改的情况下保存它。此外,在某些情况下,它不必是正确的JSON字符串,它可能会有一些错误。
$json = json_decode('{
    "time":"321321545646",
    "documents":[
        {"name":"name1","body":"HASH_BASE64 1"},
        {"name":"name2","body":"HASH_BASE64 2"}
    ]
}');
foreach ($json->documents as $document){
    $document->body = "LONGSTRING";
}
dump($json);
{#229 ▼
  +"time": "321321545646"
  +"documents": array:2 [▼
    0 => {#228 ▼
      +"name": "name1"
      +"body": "LONGSTRING"
    }
    1 => {#227 ▼
      +"name": "name2"
      +"body": "LONGSTRING"
    }
  ]
}