读写配置文件

我正在编写一个小脚本,为设备生成一些配置。 我想在单独的文件中存储配置,并在将配置内容打印到浏览器时更改一些字符串。 我怎样才能替换文件行中的字符串与变量从$ _POST ['somevariable']?

- 附加信息 -

我有几种类型的设备。 我想为每种类型的设备使用单独的配置模板文件。 如果有人想改变某些类型的设备的配置,他们会改变该文件而不是php文件。 但为了在php中使用这个模板,我必须在打印到网页之前替换该文件中的一些字符串,例如:sys info hostname%host_name%sys info location%location%ip set%ip%字符串之间%%(应该用$ _POST [“host_name”],$ _POST [“location”],$ _POST [“ip”]等替换字符。所有这些参数都是从发布的表单中获取的。


为此,建议使用某种结构化的文件格式。
考虑使用CSV,Ini,XML,JSON或YAML,并使用适当的API来读取和写入它们。

另一种方法是将配置存储在数组中,然后使用serialize / unserialize或使用var_export / include来使用它。

非常基本的例子:

class MyConfig
{
    public static function read($filename)
    {
        $config = include $filename;
        return $config;
    }
    public static function write($filename, array $config)
    {
        $config = var_export($config, true);
        file_put_contents($filename, "<?php return $config ;");
    }
}

你可以像这样使用这个类:

MyConfig::write('conf1.txt', array( 'setting_1' => 'foo' ));
$config = MyConfig::read('conf1.txt');
$config['setting_1'] = 'bar';
$config['setting_2'] = 'baz';
MyConfig::write('conf1.txt', $config);

使用SQLite。 然后你可以查询特定的数据,并且仍然有一个本地文件。 FYI - PDO报价自动在价值附近添加单引号。

$Filename = "MyDB.db";

try {
    $SQLHandle = new PDO("sqlite:".$Filename);
}
catch(PDOException $e) {
    echo $e->getMessage()." :: ".$Filename;
}

$SQLHandle->exec("CREATE TABLE IF NOT EXISTS MyTable (ID INTEGER PRIMARY KEY, MyColumn TEXT)");

$SQLHandle->beginTransaction();

$SQLHandle->exec("INSERT INTO MyTable (MyColumn) VALUES (".$SQLHandle->quote("MyValue").")");
$SQLHandle->exec("INSERT INTO MyTable (MyColumn) VALUES (".$SQLHandle->quote("MyValue 2").")");

$SQLHandle->commit();

$Iterator = $SQLHandle->query("SELECT * FROM MyTable ORDER BY MyColumn ASC");

unset($SQLHandle);

foreach($Iterator as $Row) {
    echo $Row["MyColumn"]."n";
}

我同意戈登。

如果你不遵循他的建议,你可以做这样的事情:

$file = file_get_contents('./conf.tpl');
$file = str_replace('%server%', 'localhost', $file);
file_put_contents('./conf.txt', $file);
链接地址: http://www.djcxy.com/p/29825.html

上一篇: Reading and Writing Configuration Files

下一篇: selecting/view one row from list