在PHP设置文件中动态编写定义

时间:2012-08-01 00:00:54

标签: php token

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

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

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

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

3 个答案:

答案 0 :(得分: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);

这就是全部。

答案 1 :(得分:0)

define()方式是否明确?

如果您真的需要以PHP格式使用它,请使用var_export()和include,另一方面完全不安全...或使用INI文件,即create ini file, write values in PHP

答案 2 :(得分:0)

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