如何使用 preg_replace 替换 JSON 值?

How to replace JSON value using preg_replace?

这是我的 JSON 文件 sample.json

{
  "lbl_name":"Your name",
  "dynamic_name":"Hi, {{ name 1 }}, {{ name 2 }} and {{ name 3 }}"
}

$content = file_get_contents(sample.json);
$translate = json_decode$content, true);
$replaceContent = preg_replace('/\{{[^)]*\}}/', '%s', $translate);
print_r($replaceContent);

我正在获取结果

Array ( [lbl_name] => Your name [dynamic_name] => Hi %s ) 

我想要的结果应该是

Array ( [lbl_name] => Your name [dynamic_name] => Hi %s, %s and %s ) 

谢谢

你的正则表达式是贪婪的,因此试图匹配它可以获得的最大匹配。

使用 ?-control 字符使您的模式成为非贪婪模式,这意味着它匹配它可以获得的 最小 匹配:

$data = "Hi, {{ name 1 }}, {{ name 2 }} and {{ name 3 }}"
echo preg_replace('/{{[^)]*?}}/', '%s', $data);
//prints Hi, %s, %s and %s

检查这个,

$data = '{
  "lbl_name":"Your name",
  "dynamic_name":"Hi, {{ name 1 }}, {{ name 2 }} and {{ name 3 }}"
}';

$data = json_decode($data, true);

$dynamic_name = $data['dynamic_name'];
$lbl_name = $data['lbl_name'];

preg_match_all('/{{ (.*?) }}/', $dynamic_name, $display);
$dynamic_name = "Hi ".$display[1][0].", ".$display[1][1]." and ".$display[1][2]; 

$newArray = array('lbl_name'=> $lbl_name, 'dynamic_name'=>$dynamic_name);
print_r($newArray);