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


Dynamically write defines in PHP settings file

我有一个PHP配置文件,其中存储了以下设置:

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

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

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

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);

这就是一切。

define()方法是否确定?

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

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