PHP 原生读写配置文件的工具函数实现

Dylan
Dylan
发布时间:2026-10-15| 1人浏览过
原创

在使用小型 PHP 项目时,有时配置并不适合使用 JSON 或 INI 格式,而是直接编写在 .php 文件中。本文将提供一套自定义函数,用于安全地读取和修改这类配置文件中的特定参数。

原理说明

传统的配置文件通常由键值对组成。为了在不引入大型解析库的情况下进行操作,核心思路是:

  1. 获取内容:使用 file_get_contents 将配置文件全部内容加载到内存。
  2. 正则匹配:利用 preg_match 查找目标键(Key)所在的行,提取当前的值。
  3. 正则替换:利用 preg_replace 定位目标键,将旧值替换为新值。
  4. 写回文件:使用 file_put_contents 将修改后的全文覆盖原文件。

环境准备与注意事项

在执行任何文件写入操作前,请确保:

  • 权限检查:Web 服务器进程对用户有该配置文件的写权限(Write Permission)。
  • 备份机制:由于是直接覆写文件,建议在开发阶段先在本地测试,关键数据建议先备份原文件。
  • 文件格式规范:该方法假设配置文件遵循如下简单的键值对格式:
<?php 
$name = "admin";
$port = '8080';
$db_count = 10;
?

操作步骤

第1步:创建读取函数 get_config

目的:根据键名从 PHP 配置文件中提取对应的值。

逻辑:

  1. 首先校验文件是否存在,不存在则返回 false。
  2. 读取文件内容。
  3. 根据传入的 $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."\
相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。