Php 通过web界面修改自定义配置文件的最佳方法?
所以在我们的项目中,我们有一个配置文件Php 通过web界面修改自定义配置文件的最佳方法?,php,javascript,python,configuration,Php,Javascript,Python,Configuration,所以在我们的项目中,我们有一个配置文件 %class name: class1 option1: on optionN: off %classend 我需要做一个网页界面,以方便修改这个文件。我曾考虑将JavaScript与PHP或Python一起使用(实际上没有多大区别) 那么,我将如何着手实施这一点呢?我应该将选项的值存储在数组或变量中吗?但是,我如何为每个类创建单独的数组或变量呢?如果有1000个班呢 或者我根本不应该在任何地方存储任何东西,而只是用regex实时定位所需的选项 我可以
%class
name: class1
option1: on
optionN: off
%classend
我需要做一个网页界面,以方便修改这个文件。我曾考虑将JavaScript与PHP或Python一起使用(实际上没有多大区别)
那么,我将如何着手实施这一点呢?我应该将选项的值存储在数组或变量中吗?但是,我如何为每个类创建单独的数组或变量呢?如果有1000个班呢
或者我根本不应该在任何地方存储任何东西,而只是用regex实时定位所需的选项
我可以举一些代码示例来说明如何最好地将设置与类关联吗?例如,程序“知道”option1:on属于名为class1的类。对于类似的内容,我建议使用某种结构化格式,例如或,而不是自己发明 这样做的好处是:
- 人们已经为这些结构化格式编写了编码器和解析器,因此您可以轻松地获取一个库并将其与您选择的语言一起使用
- 结构化格式可以轻松地跨不同的应用程序移植
- 任何第三方都可以轻松地在其应用程序中实现配置文件
<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>
在…上
关
在…上
关
在…上
关
您只需创建2个php页面即可管理此配置文件:
1.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>
事实上,我认为这也是最好的方式。但在我们的项目中,已经有一个自定义配置文件,在其他一些地方也可以使用。这就是为什么我有一些麻烦。使用XML或例如INI会容易得多。@radioprotector:在这种情况下,也许您可以编写一对自定义配置到XML和XML到自定义配置转换器。这将使您能够通过XML执行操作工作,然后以自定义配置格式保存。
<?php
# try to save the POST data into file
?>