PHP修改配置文件的两种方法

更新时间:2025-02-28 分类:阅读杂记 浏览量:2

内容不错请点个赞吧,您的点赞是我前进的动力

我们在PHP开发过程中经常有需要修改配置文件的场景,本文将介绍两种修改配置文件的方法,如有不足,欢迎指出!

  我们假设有个这样的配置文件(如果是其他格式也差不多,可将代码稍加改动)

config.php

<?php
return [
    'name' => '滑稽mc',
    'password' => '123456',
    'app' => '简书',
    'language' => 'PHP',
];

方法一

  我们可以先获取配置文件内容,然后使用正则表达式替换对应的配置项,具体实现如下

index.php

<?php
/**
 $name:配置项名称
 $value:修改后的值
 */
function setConfig($name,$value) {
    $content = file_get_contents('config.php');
    $content = preg_replace("/'{$name}' => .+,/","'{$name}' => '{$value}',",$content);
    file_put_contents($file,$content);
}

我们来分析一下这种方法的优缺点

  • 优点:代码简单,操作简便(实在编不出来了,原谅我...)
  • 缺点:
    1. 必须保证每行配置的格式相同(包括引号类型、空格数量等),否则正则表达式会比较复杂,难书写
    2. 可能会误伤(万一某个配置项的内容刚好和配置的格式相同,虽然几率很小)

测试代码

index.php

//...TODO
setConfig('name','HuajiMC');

结果

config.php

//...
    'name' => 'HuajiMC',
//...

如果你想一次性修改多个值,可以这样修改(下文不再列出)

index.php

<?php
/**
$configs:配置数组(格式:{项目名称:修改值})
*/
function setConfig($configs){
    $content = file_get_contents('config.php');
    foreach($configs as $name => $value) {
        $content = preg_replace("/'{$name}' => .+,/","'{$name}' => '{$value}',",$content);
    }
    file_put_contents('config.php',$content);
}

方法二

  我们可以将配置数组获取,通过数组修改配置项,然后将数组转换成配置文件格式,具体实现如下

index.php

<?php
function setConfig($name,$value) {
    $configs = require 'config.php'; //获取配置数组
    $configs[$name] = $value; //修改配置项
    $text = ''; //循环将配置数组转为文本
    foreach($configs as $name => $value) {
        $text .= "  '{$name}' => '{$value}',\n";
    }
    $content = <<<EOF
<?php
return [
{$text}
];
EOF;
    file_put_contents('config.php',$content);
}
  • 优点:
    1. 配置格式不必保持一致,只要符合数组语法即可
    2. 代码简单,操作简便(凑数...)
  • 缺点:因为配置文件由循环自动生成,所以有些额外内容(如注释)可能比较难保留

测试结果正常,这里就不再写了,可以自己尝试一下~

  这两种方法各有各的优点或缺点,可以结合实际情况选择相应的方法,如果你有更好的方法或修改意见,欢迎评论区留言提出。

作者:滑稽MC