Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中解析自定义配置文件_Php - Fatal编程技术网

在PHP中解析自定义配置文件

在PHP中解析自定义配置文件,php,Php,我正在尝试折叠一个用PHP读取的文件,并生成配置一行程序,以便在我的应用程序的其他地方使用。我使用的PHP脚本从一个系统中提取这个文件,我可以在bash提示符下使用set命令对其进行配置 例如,命令 设置系统ntp服务器0.pool.ntp.org 设置系统ntp服务器1.pool.ntp.org 设置系统ntp服务器2.pool.ntp.org 将在系统的配置文件中生成此结构: 系统{ ntp{ 服务器0.pool.ntp.org{ } 服务器1.pool.ntp.org{ } 服务器2.po

我正在尝试折叠一个用PHP读取的文件,并生成配置一行程序,以便在我的应用程序的其他地方使用。我使用的PHP脚本从一个系统中提取这个文件,我可以在bash提示符下使用
set
命令对其进行配置

例如,命令

设置系统ntp服务器0.pool.ntp.org

设置系统ntp服务器1.pool.ntp.org

设置系统ntp服务器2.pool.ntp.org

将在系统的配置文件中生成此结构:

系统{
ntp{
服务器0.pool.ntp.org{
}
服务器1.pool.ntp.org{
}
服务器2.pool.ntp.org{
}
}
}

。。我希望让我的PHP脚本读取此文件并生成以下输出:

系统ntp服务器0.pool.ntp.org

系统ntp服务器1.pool.ntp.org

system ntp server 2.pool.ntp.org

我不确定该如何处理这个问题,甚至在编写psudo代码以理解如何折叠这些节点并生成所需的行时遇到问题。让我感到困难的是,配置节点的深度可能会有所不同,例如:

系统登录用户root身份验证加密密码

。。生成结构

系统{
登录{
用户根{
认证{
加密密码
}
}
}
}

。。并与上面的NTP命令合并,整个配置文件如下所示:

系统{
登录{
用户根{
认证{
加密密码
}
}
}
ntp{
服务器0.pool.ntp.org{
}
服务器1.pool.ntp.org{
}
服务器2.pool.ntp.org{
}
}
}

有没有人可以建议一些方法

  • 获取配置文件并创建一个数组,其中每一行都是数组的一项
  • 如果其中一个项目中有一个
    {
    }
    ,请将该项目拆分为两个项目,以便在最后每个括号都是自己的项目
  • 创建使用以下规则创建数组的函数:
    • 如果项目是一个开始的括号:创建一个新的子数组,并将后面的所有内容都放在其中
    • 如果项目是右括号,则终止子数组并继续上一个父数组
    • 如果两者都没有,就把它放进去

  • 有了这个小算法,您应该能够循环配置并创建所需的输出。例如,按与
    ntp
    匹配的
    键进行筛选。有创意:)

    您是否可以选择切换到更标准的格式?您当前的格式非常接近JSON,如果您有权访问创建配置的脚本,您将有许多简单的选项。系统如何知道
    用户root
    是一个键,而不是像
    {user{root…
    中那样的两个separeate键?是否有允许的键列表?