2012-07-06 73 views
0

我有写一些信息到一个配置文件,它看起来有点像这样的PHP文件...阅读一个配置文件到PHP

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

等等

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

这怎么办?

我以前曾将它写入一个.csv文件并重新读入,但后来被告知这不是所需的,它必须位于cfg文件中,所以添加将信息重新读入PHP脚本,就像读取.csv文件时一样。

我认为需要的是不要读入text1和text2变量,而是让等号被读回来,这样hello和goodbye字符串会被读回到PHP中。

另一件事是,当用户添加更多信息来说出text1时,它会有多个值,例如他们可以改变文本1至......

text1=hello,howareyou 

然后说,将需要的PHP脚本中一个单独的实体,所以我猜我会使用爆炸函数来获取数据的独立作品。

该数据将被读入表中,用户可以在该表中再次编辑准备好的信息。当信息中读取

我的HTML会是这样的。

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

我希望我已经说清楚了这个,我真的很努力理解如何可以这样做。因为它看起来不如从.csv读取容易。我也不希望PHP执行脚本,我只是需要将它读入PHP,以便用户可以再次编辑信息。

回答

1

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

$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 />'; 
    } 
} 
+0

就像我说的,我不希望PHP执行它,我只是想让PHP写入并从cfg文件中读取数据。我想你明白我的意思,我会放弃一下,看看会发生什么。谢谢。 – CheckeredMichael 2012-07-06 11:47:22

+0

我只是指出PHP *无法执行它,无论您是否希望它,因为它不是有效的PHP,就是这样。祝你好运。 – Utkanos 2012-07-06 11:48:10

+0

这正是我们需要的,非常感谢。一个问题,虽然...我有我的cfg文件中的#comment,我不希望呼应$分离器[1]。有什么我可以添加,使其忽略任何哈希标签? – CheckeredMichael 2012-07-06 11:56:11

2

指定的格式在哪里?也许你可以使用.ini文件格式,这与你的例子很相似。你可以将use parse_ini_file() to read in the .ini-file作为数组。 你也可以分组几个条目。请参阅链接的PHP文档页面上的示例。