• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

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

武飞扬头像
滑稽MC
帮助1

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

引言

我们在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. 代码简单,操作简便(凑数...)
  • 缺点:因为配置文件由循环自动生成,所以有些额外内容(如注释)可能比较难保留

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

结语

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

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgkficc
系列文章
更多 icon
同类精品
更多 icon
继续加载