PHP修改config文件里面的配置
时间:2023年10月04日
/来源:网络
/编辑:佚名
在PHP开发网站里,config.php这种配置文件,一般都需要用户通过后台提交数据保存,这时候就需要PHP来操作这个文件!
这时候,我们就需要用PHP来修改这种PHP文件。
举个例子,比如我config.php里面的代码是这样的:
<?php
if(!defined('InEmpireCMS'))
{
exit();
}
define('EmpireCMSConfig',TRUE);
$ecms_config=array();
//数据库设置
$ecms_config['db']['usedb']='mysql'; //数据库类型
$ecms_config['db']['dbver']='5.0'; //数据库版本
$ecms_config['db']['dbserver']='localhost'; //数据库登录地址
$ecms_config['db']['dbport']=''; //端口,不填为按默认
$ecms_config['db']['dbusername']='test_4s5_cn'; //数据库用户名
$ecms_config['db']['dbpassword']='wnxxtJTa3y4SPPrr'; //数据库密码
$ecms_config['db']['dbname']='test_4s5_cn'; //数据库名
$ecms_config['db']['setchar']='utf8'; //设置默认编码
$ecms_config['db']['dbchar']='utf8'; //数据库默认编码
$ecms_config['db']['dbtbpre']='phome_'; //数据表前缀
$dbtbpre=$ecms_config['db']['dbtbpre']; //数据表前缀
$ecms_config['db']['showerror']=1; //显示SQL错误提示(0为不显示,1为显示)
为了修改,于是我写了函数!
函数
function modifyDatabaseConfig($filename, $newConfig) {
// 读取配置文件内容
$file = file_get_contents($filename);
// 替换配置内容
// 配置文件里的变量名前缀
$prefix = '$ecms_config[\'db\']';
// 遍历新配置,将对应的变量替换为新值
foreach ($newConfig as $key => $value) {
$pattern = '/' . preg_quote($prefix) . '\[\'' . preg_quote($key) . '\'\]\s*=\s*\'[^;]+;/';
$replace = $prefix . '[\'' . $key . '\'] = \'' . $value . '\';';
$file = preg_replace($pattern, $replace, $file);
}
// 保存文件
file_put_contents($filename, $file);
}
函数的参数说明:
$filename:配置文件的完整路径和文件名;
$newConfig:一个数组,包含需要修改的数据库配置项及其对应的新值。例如,要将数据库地址改为 127.0.0.1,密码改为 newpassword,可以这样调用函数:modifyDatabaseConfig('config.php', ['dbserver' => '127.0.0.1', 'dbpassword' => 'newpassword']);。
这个函数会读取配置文件内容,使用正则表达式匹配到所有数据库配置项,然后替换成新的值,最后将修改后的内容写回到配置文件。
这时候,我们就需要用PHP来修改这种PHP文件。
举个例子,比如我config.php里面的代码是这样的:
<?php
if(!defined('InEmpireCMS'))
{
exit();
}
define('EmpireCMSConfig',TRUE);
$ecms_config=array();
//数据库设置
$ecms_config['db']['usedb']='mysql'; //数据库类型
$ecms_config['db']['dbver']='5.0'; //数据库版本
$ecms_config['db']['dbserver']='localhost'; //数据库登录地址
$ecms_config['db']['dbport']=''; //端口,不填为按默认
$ecms_config['db']['dbusername']='test_4s5_cn'; //数据库用户名
$ecms_config['db']['dbpassword']='wnxxtJTa3y4SPPrr'; //数据库密码
$ecms_config['db']['dbname']='test_4s5_cn'; //数据库名
$ecms_config['db']['setchar']='utf8'; //设置默认编码
$ecms_config['db']['dbchar']='utf8'; //数据库默认编码
$ecms_config['db']['dbtbpre']='phome_'; //数据表前缀
$dbtbpre=$ecms_config['db']['dbtbpre']; //数据表前缀
$ecms_config['db']['showerror']=1; //显示SQL错误提示(0为不显示,1为显示)
为了修改,于是我写了函数!
函数
function modifyDatabaseConfig($filename, $newConfig) {
// 读取配置文件内容
$file = file_get_contents($filename);
// 替换配置内容
// 配置文件里的变量名前缀
$prefix = '$ecms_config[\'db\']';
// 遍历新配置,将对应的变量替换为新值
foreach ($newConfig as $key => $value) {
$pattern = '/' . preg_quote($prefix) . '\[\'' . preg_quote($key) . '\'\]\s*=\s*\'[^;]+;/';
$replace = $prefix . '[\'' . $key . '\'] = \'' . $value . '\';';
$file = preg_replace($pattern, $replace, $file);
}
// 保存文件
file_put_contents($filename, $file);
}
函数的参数说明:
$filename:配置文件的完整路径和文件名;
$newConfig:一个数组,包含需要修改的数据库配置项及其对应的新值。例如,要将数据库地址改为 127.0.0.1,密码改为 newpassword,可以这样调用函数:modifyDatabaseConfig('config.php', ['dbserver' => '127.0.0.1', 'dbpassword' => 'newpassword']);。
这个函数会读取配置文件内容,使用正则表达式匹配到所有数据库配置项,然后替换成新的值,最后将修改后的内容写回到配置文件。
新闻资讯 更多
- 【建站知识】查询nginx日志状态码大于400的请求并打印整行04-03
- 【建站知识】Python中的logger和handler到底是个什么?04-03
- 【建站知识】python3拉勾网爬虫之(您操作太频繁,请稍后访问)04-03
- 【建站知识】xpath 获取meta里的keywords及description的方法04-03
- 【建站知识】python向上取整以50为界04-03
- 【建站知识】scrapy xpath遇见乱码解决04-03
- 【建站知识】scrapy爬取后中文乱码,解决word转为html 时cp1252编码问题04-03
- 【建站知识】scrapy采集—爬取中文乱码,gb2312转为utf-804-03