PHP 原生读写配置文件的工具函数实现
在使用小型 PHP 项目时,有时配置并不适合使用 JSON 或 INI 格式,而是直接编写在 .php 文件中。本文将提供一套自定义函数,用于安全地读取和修改这类配置文件中的特定参数。
原理说明
传统的配置文件通常由键值对组成。为了在不引入大型解析库的情况下进行操作,核心思路是:
- 获取内容:使用
file_get_contents将配置文件全部内容加载到内存。 - 正则匹配:利用
preg_match查找目标键(Key)所在的行,提取当前的值。 - 正则替换:利用
preg_replace定位目标键,将旧值替换为新值。 - 写回文件:使用
file_put_contents将修改后的全文覆盖原文件。
环境准备与注意事项
在执行任何文件写入操作前,请确保:
- 权限检查:Web 服务器进程对用户有该配置文件的写权限(Write Permission)。
- 备份机制:由于是直接覆写文件,建议在开发阶段先在本地测试,关键数据建议先备份原文件。
- 文件格式规范:该方法假设配置文件遵循如下简单的键值对格式:
<?php
$name = "admin";
$port = '8080';
$db_count = 10;
?
操作步骤
第1步:创建读取函数 get_config
目的:根据键名从 PHP 配置文件中提取对应的值。
逻辑:
- 首先校验文件是否存在,不存在则返回
false。 - 读取文件内容。
- 根据传入的 $type 参数决定匹配规则:
- 若为
string,分别尝试匹配双引号"value"或单引号'value'包裹的内容。 - 若为
int,直接匹配等号与分号之间的数值。
- 若为
/**
* 获取配置文件中的指定变量值
*
* @param string $file 配置文件路径
* @param string $ini 变量名 (Key)
* @param string $type 数据类型: 'string' 或 'int'
* @return mixed 成功返回值,失败返回 false
*/
function get_config($file, $ini, $type = "string") {
if (!file_exists($file)) return false;
$str = file_get_contents($file);
// 使用 preg_quote 转义特殊字符,防止变量名包含正则关键字
$escapedIni = preg_quote($ini, '/');
if ($type == "int") {
// 匹配整数: $key = value;
if (preg_match("/".$escapedIni."=(.*);/", $str, $res)) {
return $res[1];
}
} else {
// 匹配字符串: $key = "value"; 或 $key = 'value';
if (preg_match("/".$escapedIni."\免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









