如何使用preg_replace替换JSON值?

时间:2016-11-18 06:15:45

标签: php preg-replace

这是我的JSON文件 sample.json

describe('Test', function() {
    var actionwords = Object.create(Actionwords);

    it('Login_Test (uid:fe6d6670-a864-4d0f-a867-3faf9f51ff8d)', function() {
        actionwords.toApplicationURL();
    });
});

{
  "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 ) 

由于

2 个答案:

答案 0 :(得分:1)

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

使用<md-slider step="1" md-discrete min="0" max="{{max}}" ng-model="value"></md-slider> <md-checkbox ng-model="max" ng-true-value="20" ng-false-value="{{baseMax}}"> max 20 </md-checkbox> <md-checkbox ng-model="max" ng-true-value="40" ng-false-value="{{baseMax}}"> max 40 </md-checkbox> <md-checkbox ng-model="max" ng-true-value="60" ng-false-value="{{baseMax}}"> max 60 </md-checkbox> - 控制字符使您的模式非贪婪,这意味着它匹配它可以获得的最小匹配:

?

答案 1 :(得分:1)

检查一下,

$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);