- 背景 -
所以我正在为本地开发机器安装一个安装程序脚本,并且用于安装word press,我想要做的就是让用户从下拉框中选择一个特定的插件,然后从那里选择他们想要安装的版本。
- 问题 -
所以我需要能够解析.cfg文件并将所有值动态存储到变量中,这样如果我们添加更多的插件就不会破坏它们。我该怎么做呢?
答案 0 :(得分:3)
多种方式,具体取决于您希望如何存储配置数据。最快的方法是将数据存储为.ini文件,并使用PHP内置的parse_ini_file解析它。您还可以将数据存储为其他格式,例如XML和YAML,但我不建议使用XML,因为您可能不会在不同的系统之间传输数据,而且XML往往更难以阅读所有无关标签( vs yaml或ini)。
我个人更喜欢yaml并使用Symfony's Yaml Component解析器将yaml文件解析为数组。 Symfony的Yaml组件可以在Symfony框架之外使用。您也可以查看Zend's Yaml parser。
选择要使用的格式和解析器之后,就像将文件存储在Web服务器可访问的地方一样简单,并将其传递给解析器API。在解析之后,您应该可以通过数组访问这些值。
- 更新 -
<?php
$settings = parse_ini_file('test.ini');
var_dump($settings);
结果:
array(41) {
["plugins"]=>
string(0) ""
["breadcrumb-navxt"]=>
string(5) "4.0.1"
["bp-moderation"]=>
string(5) "0.1.4"
["buddypress-activity-stream-hashtags"]=>
string(5) "0.4.0"
["buddypress-group-documents"]=>
string(5) "0.3.5"
["buddypress-group-email-subscription"]=>
string(5) "2.9.1"
["buddypress-links"]=>
string(3) "0.5"
["buddypress"]=>
string(6) "1.2.10"
["calendar"]=>
string(5) "1.3.1"
["collapsing-pages"]=>
string(5) "0.6.1"
这似乎按预期工作,所以如果我想要calendar
插件的版本号,我会这样做:
var_dump($settings['calendar']);
存储在动态变量中:
$settings = parse_ini_file('test.ini');
foreach ($settings as $key => $setting) {
// Notice the double $$, this tells php to create a variable with the same name as key
$$key = $setting;
}
var_dump($calendar);
答案 1 :(得分:0)
你能用json或php序列化格式存储文件吗?