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


How to find and replace a line in multiple files with PHP

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

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

一个基本的配置行看起来像这样:$config['base_url'] = 'test';。我尝试使用str_replace(),但这不起作用,因为我不知道当前在变量中是什么。

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

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

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

您可以像这样使用正则表达式:

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

你必须适应每一行。

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

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

你可以直接使用str_replace()