如何使用PHP查找和替换多个文件中的一行

时间:2013-03-23 12:57:12

标签: php file replace line config

我想为我当前的项目创建一个安装程序,它会自动修改几十个配置文件。

因此,如果表单已发送,PHP脚本应查看搜索选项所在的配置文件并进行更改。在你问之前,我不能把文件放在一起;)。

基本配置行如下所示: $config['base_url'] = 'test';。 我尝试使用str_replace(),但这不起作用,因为我不知道变量中当前的内容。

所以我需要一个在多个文件中搜索$config['base_url'] = '%';的函数,并将其替换为$config['base_url'] = 'new_value';(例如)。

2 个答案:

答案 0 :(得分:2)

我意识到答案被接受了,最初我删除了这个,然而,在评论中你提到配置是可编辑的,这可能意味着其他用户,所以你不能保证间距匹配,也不能保证他们会总是使用'代替",所以以下内容可能更宽容

$name = 'base_url';
$value = 'new_value';
$config = '$config["base_url"] = "old_value";';

$config  = preg_replace('/\[(?:\'|\")'.$name.'(?:\'|\")\]\s*=\s*(\'|\")(.*)\\1;/', "['".$name."'] = '$value';", $config);

echo '<pre>', var_dump($config), '</pre>';

答案 1 :(得分:0)

您可以使用如下的正则表达式:

/\$config\['base_url'\] = '[a-zA-Z0-9]';/

你必须适应每一行。

在我看来,更好的解决方案是使用如下行创建模板配置文件:

$config['base_url'] = '%BASE_URL%';

您只需使用str_replace()