我正在尝试使用 html 表单编辑配置文件。编辑 (settings.php) 文件如下所示:
$config['foo'] = FALSE;
$config['maintenance'] = FALSE; //this line is that what it matters
$config['bar'] = FALSE;
这里的想法是更改 of $config['maintenance']
,因此一旦提交表单(有一个名为复选框以maintenance
根据其状态将状态设置为 true 或 false),我得到的复选框值为:
$status = ($_POST['maintenance'] === 'on')? "TRUE" : "FALSE";
我已经调试了$status
var 值,这里一切正常。现在,我正在使用下面的正则表达式在文件中找到正确的行:
\$config\[(\s+)?(\'|")maintenance(\'|")(\s+)?\](\s+)?=(\s+)?(false|FALSE|true|TRUE);/
最初“工作”很好,因为我不确定,但让我完成解释......根据上面的代码,现在我继续进行替换:
//read the content and replace it
$content = preg_replace(
'/\$config\[(\s+)?(\'|")maintenance(\'|")(\s+)?\](\s+)?=(\s+)?(false|FALSE|true|TRUE);/',
'$config["maintenance"] = ' . $status . ';',
file_get_contents($file)
);
//set the new content
file_put_contents($file, $content);
当我第一次运行它并选中复选框时,它可以工作,结果如下:
$config['foo'] = FALSE;
$config["maintenance"] = TRUE;
$config['bar'] = FALSE;
但是,无论我在复选框中选择什么,该文件都不会显示任何更改。你能引导我找到正确的方向来找到错误吗?谢谢
编辑。这是html标记
<label>
<input type="checkbox" name="maintenance" /> in maintenance mode
</label>