通过Web界面修改自定义配置文件的最佳方法?

时间:2012-03-21 09:31:25

标签: php javascript python configuration

所以在我们的项目中,我们有一个类似于

的配置文件
%class
name: class1 
option1: on
optionN: off
%classend

我需要创建一个Web界面,以便轻松修改此文件。我正在考虑使用PHP或PHP(实际上并没有太大的区别)。

那我该如何实现呢?我应该在数组或变量中存储选项的值吗?但是,我如何为每个类创建一个单独的数组或变量?如果有1000个课程怎么办?

或许我根本不应该存储任何东西,只需实时找到所需的正则表达式选项?

我是否可以获得一些代码示例,说明如何将设置与类关联起来?因此,例如程序“知道”option1:on属于名为class1的类。

2 个答案:

答案 0 :(得分:0)

对于这样的事情,我建议采用某种结构化格式,例如XMLYAML,而不是发明自己的格式。

这样做的好处是:

  • 人们为这些结构化格式编写了编码器和解析器,因此您可以轻松地获取库并使用您选择的语言。

  • 结构化格式可以在不同的应用程序中轻松移植。

  • 任何第三方都可以轻松地将配置文件实施到他们的应用程序中。

至于使用Web界面编辑它们,如果您使用XML或YAML,PHP的优秀XML和YAML扩展应该允许您轻松浏览配置文件并修改所需的变量。

至于将设置与类相关联,可以使用XML或YAML轻松解决此问题。

在XML中,您的文件可能如下所示

<class name="class1">
 <option1>on</option1>
 <optionN>off</optionN>
</class>

<class name="class2">
 <option1>on</option1>
 <optionN>off</optionN>
</class>

<class name="class3">
 <option1>on</option1>
 <optionN>off</optionN>
</class>

答案 1 :(得分:0)

您只需创建2个php页面即可管理此配置文件: 1. read.php:阅读配置文件并以友好的方式显示它 2. save.php:保存你修改的内容

read.php的示例代码:

<?php
$f = fopen('config.cfg', 'r');
# Read the file line by line
$curr = '';
while(!feof($f)){
    $line = fgets($f);
    if ($line=='%class'){
        $line = fgets($f);
        $classname = explode(': ', $line)[1];
        $curr = $classname;
        $cfg[$classname] = array();
    }
    if ($line=='%classend'){
        continue;
    }
    $opt = explode(': ', $line);
    $cfg[$curr][$opt[0]] = $opt[1];
}
fclose($f);
?>
<html>
<body>
<!-- output the $cfg into form -->
<form action="save.php" method="POST">
<?php foreach ($cfg as $k => $v): ?>
<p>
    <input type="text" name="<?php echo $k; ?>" value="<?php echo $k; ?>" /><br/>
    <textarea name="<?php echo $k; ?>_v"><?php echo implode(',',$v); ?></textarea>
</p>
<?php endforeach; ?>
<button type="submit">Save</button>
</form>
</body>
</html>

还有save.php:

<?php
# try to save the POST data into file
?>