我正在努力使用以下脚本:
$filename = '../lang.nl.php';
$string = '<?php // language = ' . $filename . '<br>';
foreach ($_POST as $param_name => $param_val) {
$string .= "$lang=['". $param_name ."'] = ". $param_val .";\n";
}
$string .= "?>";
file_put_contents($filename, $string);
正如您所看到的,我想创建一个包含所有$ _POST变量的语言文件,但PHP将$ string中的$ lang视为变量。你可以想象这不是我想要的,它应该只打印$ lang而不是变量应该是什么。我得到的错误是$ lang不存在,但我只想打印$ lang。
答案 0 :(得分:2)
逃离$:$string .= "\$lang=['". $param_name ."'] = ". $param_val .";\n";
与原始代码的不同之处是$lang
之前的反斜杠,它使$符号成为普通的$符号,而不是变量名称的标记。
答案 1 :(得分:1)
在这里使用var_export
更容易(也更安全):
$filename = '../lang.nl.php';
$post = var_export($_POST, true);
$code = "<?php // language = $filename;
\$lang = $post;
?>";
file_put_contents($filename, $code);
如果"$lang=['". $param_name ."'] = ". $param_val;
包含引号, param_val
将会失败。