0

我有一个 PHP 配置文件,它存储如下设置:

  define("SETTING_1", "");
  define("SETTING_2", "");
  define("SETTING_3", "");

默认情况下,设置是空的,但是我有一个安装程序文件install.php,它基本上会提示用户进行设置。打开设置文件,找到每个设置的定义并插入值的最佳方法是什么?最后,需要将设置文件保存到磁盘。

我想避免使用正则表达式或简单的字符串搜索。我遇到了token_get_all(),使用它有意义吗?

4

3 回答 3

3

token_get_all()并不能真正帮助您,因为它只会为您提供字符串中的所有解析标记。token_get_all()与您列出的其他方法相比,您将花费更多时间为结果编写状态机或解析器。

实现这一点的最简单方法是使用某种已知的独特占位符,如下所示:

define("SETTING_1", "{{SETTING_1}}");
define("SETTING_2", "{{SETTING_2}}");
define("SETTING_3", "{{SETTING_3}}");

然后,您打开文件,并使用它们的实际值替换所有这些占位符str_replace()

$file = file_get_contents( "config.php");
$config = str_replace( 
    array( '{{SETTING_1}}', '{{SETTING_2}}', '{{SETTING_3}}'),
    array( $setting1, $setting2, $setting3),
    $file
);
file_put_contents( 'config.php', $config);

这就是它所需要的。

于 2012-08-01T00:07:45.253 回答
0

define() 方式是确定的吗?

如果你真的需要 PHP 格式,使用 var_export() 和 include,另一方面这是完全不安全的......或者使用 INI 文件,即创建 ini 文件,在 PHP 中写入值

于 2012-08-01T00:04:02.407 回答
0

不要将常量用于用户设置。这是个坏主意。创建一个数组并使用 var_export 和第二个参数“true”存储在一个文件中。它是可读的,可以使用数组函数重新生成。

于 2012-08-01T00:17:26.823 回答