如何使用 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);
这是我的 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);