无法用regex替换对象属性值

时间:2014-03-21 02:30:32

标签: php regex json

我试图在此json文件中替换model的值。 json文件包含:

{
    "model": {
        "template": "model.txt",
        "directory": "app/models",
        "filename": "{{Entity}}.php"
    },

我试图使用以下正则表达式替换它并且无法使其匹配...

$json = preg_replace('/"model": \{(.*?)\},/i', '"model": false', $json);

我知道我可以在解码后更改此值,这是处理此问题的理想方法。由于各种原因,运行此正则表达式将是处理此特定解决方案的最简单方法。

以下是我正在使用的内容:

        $json = file_get_contents($path);
        $json = preg_replace('/"model": \{(.*?)\},/i', '"model": false', $json);
var_dump($json);
        exit;

2 个答案:

答案 0 :(得分:1)

这些应该有效:

第一种模式不会限制"model"中的项目数量:

preg_replace('/("model.*\{.*(\n.*)+?\n.+\},)/', '"model": false', $json);

这将特别限制匹配示例中的行数:

preg_replace('/("model.*\{.*(\n.*){3}\n.+\},)/', '"model": false', $json);

答案 1 :(得分:0)

给出$ json原始的json内容

$ajson=json_decode($json);
$ajson['model']=false;
$json=json_encode($ajson);