将配置文件读入PHP

将配置文件读入PHP,php,Php,我有一个PHP文件,它将一些信息写入一个配置文件,看起来有点像这样 #Date=01/2012 text1=hello text2=goodbye 等等 这个文件是作为一个cfg文件编写的,供perl脚本使用,但我需要将该文件读回PHP,以便每次都可以对其进行编辑,以便perl脚本再次使用 如何做到这一点 我以前让它写入一个.csv文件并被读回,但后来被告知这不是需要的,它必须在一个cfg文件中,因此将信息添加回PHP脚本将与读入.csv文件时一样容易 我认为我们需要的不是读取text1和te

我有一个PHP文件,它将一些信息写入一个配置文件,看起来有点像这样

#Date=01/2012
text1=hello
text2=goodbye
等等

这个文件是作为一个cfg文件编写的,供perl脚本使用,但我需要将该文件读回PHP,以便每次都可以对其进行编辑,以便perl脚本再次使用

如何做到这一点

我以前让它写入一个.csv文件并被读回,但后来被告知这不是需要的,它必须在一个cfg文件中,因此将信息添加回PHP脚本将与读入.csv文件时一样容易

我认为我们需要的不是读取text1和text2变量,而是将等于后面的变量读回,以便将hello和bye字符串读回PHP

另一件事是,当用户添加更多信息来表示text1时,它将具有多个值,例如,他们可以将text1更改为

text1=hello,howareyou
然后,在PHP脚本中需要是一个单独的实体,所以我猜我会使用explode函数来获取单独的数据片段

这些数据将被读入一个表中,用户可以在该表中编辑准备好的信息,以备perl脚本再次运行时使用

当信息被读入时,我的HTML是这样的

<table>
    <tr>
        <td>text 1</td>
        <td>hello</td>
        <td>howareyou</td>
    </tr>
    <tr>
        <td>text 2</td>
        <td>goodbye</td>
    </tr>
</table>

文本1
你好
你好吗
文本2
再见
我希望我已经清楚地说明了这一点,我真的很难理解如何做到这一点。因为它看起来不像从.csv文件读取那么容易


另外,我不希望PHP执行脚本,我只需要将脚本读入PHP,以便用户可以再次编辑信息。

指定的格式在哪里?也许您可以使用.ini文件格式,这与您的示例类似。您可以将其作为数组。
您还可以将多个条目分组。请参见链接的PHP文档页面上的示例。

指定的格式在哪里?也许您可以使用.ini文件格式,这与您的示例类似。您可以将其作为数组。
您还可以将多个条目分组。请参阅链接的PHP文档页面上的示例。

试试这个。最终会得到一个整洁的关联数组-参数名称作为元素名称,参数值作为元素值

$cfg_path = 'path/to/config.cfg';
if (file_exist($cfg_path)) {
    if (preg_match_all('/^(?!#)(.+)=(.*)$/m', file_get_contents($cfg_path), $cfg)) {
        $cfg = array_combine($cfg[1], $cfg[2]);
        foreach($cfg as $name => $val)
            echo $name.' = '.$val.'<br />';
    }
}
$cfg_path='path/to/config.cfg';
如果(文件存在($cfg\u路径)){
如果(preg_match_all('/^(?)(.+)=(.*)$/m',则文件获取内容($cfg_路径),$cfg)){
$cfg=array_combine($cfg[1],$cfg[2]);
foreach($cfg作为$name=>$val)
回显$name.'='.$val.
; } }
试试这个。最终会得到一个整洁的关联数组-参数名称作为元素名称,参数值作为元素值

$cfg_path = 'path/to/config.cfg';
if (file_exist($cfg_path)) {
    if (preg_match_all('/^(?!#)(.+)=(.*)$/m', file_get_contents($cfg_path), $cfg)) {
        $cfg = array_combine($cfg[1], $cfg[2]);
        foreach($cfg as $name => $val)
            echo $name.' = '.$val.'<br />';
    }
}
$cfg_path='path/to/config.cfg';
如果(文件存在($cfg\u路径)){
如果(preg_match_all('/^(?)(.+)=(.*)$/m',则文件获取内容($cfg_路径),$cfg)){
$cfg=array_combine($cfg[1],$cfg[2]);
foreach($cfg作为$name=>$val)
回显$name.'='.$val.
; } }
就像我说的,我不想让PHP执行它,我只想让PHP对cfg文件进行写入和读取。我想你明白我的意思,我要试一试,看看会发生什么。谢谢。我只是指出PHP无法执行它,不管您是否希望它执行,因为它不是有效的PHP,仅此而已。祝你好运。这正是我们需要的,非常感谢。但有一个问题。。。我的cfg文件中有一条#注释,我不希望在回显$splitter[1]时回显它。有什么我可以添加,使它忽略任何哈希标记?当然。事实上,我想到了一个更简洁的方法(也省略了注释行)-参见编辑。非常感谢,这就是答案!你太棒了,如果听起来像个傻瓜,我很抱歉,我上次正确地学习PHP已经有一段时间了,我只学到了基础知识。就像我说的,我不想让PHP执行它,我只想让PHP对cfg文件进行读写。我想你明白我的意思,我要试一试,看看会发生什么。谢谢。我只是指出PHP无法执行它,不管您是否希望它执行,因为它不是有效的PHP,仅此而已。祝你好运。这正是我们需要的,非常感谢。但有一个问题。。。我的cfg文件中有一条#注释,我不希望在回显$splitter[1]时回显它。有什么我可以添加,使它忽略任何哈希标记?当然。事实上,我想到了一个更简洁的方法(也省略了注释行)-参见编辑。非常感谢,这就是答案!你太棒了,如果听起来像个傻瓜,我很抱歉。我上次正确地学习PHP已经有一段时间了,我只学到了一些基础知识。