我有一个PHP配置文件,它存储如下设置:
define("SETTING_1", "");
define("SETTING_2", "");
define("SETTING_3", "");
默认情况下,设置为空,但我有一个安装程序文件install.php
,它基本上会提示用户进行设置。打开设置文件的最佳方法是,找到每个设置的定义并插入值?最后,需要将设置文件保存到磁盘。
我想使用正则表达式或简单的字符串搜索来卵形。我遇到token_get_all()
,使用它有意义吗?
答案 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'的文件中。它是可读的,可以使用数组函数重新生成。