fwrite()变量不保存为“$ variable”

时间:2015-12-02 01:31:19

标签: php

我正在创建一个设置系统,用户输入5个值,这些值在文件中设置:

    $f = fopen('settings.php', 'w') or die("can't open file");
    fwrite($f, "<?php $administrationemail = '$administration_email'; $host = '$mysqlhost'; $mysql_user = '$mysqluser'; $mysql_pass = '$mysqlpass'; $db = '$mysqldb'; ?>");
    fclose($f);

但无论$ administrationemail实际上不会显示在文件夹中。

我希望文件看起来像:

<?php
$host = '';
$mysql_user = '';
$mysql_pass = '';
$db = '';
$administrationemail = '';
?>

它看起来像什么:

<?php $host = ''; $mysql_user = ''; $mysql_pass  = '';  $db = ''; =''; ?>

1 个答案:

答案 0 :(得分:1)

当你使用(双引号)来包含一个字符串时,如果可能的话,PHP将用它们的值替换 $ variables 。如果你在前面添加一个反斜杠变量,如下所示: \ $ variable ,PHP会将其解释为文字值,而不是变量名。

$administration_email = 'admin@example.com';
$mysqlhost = 'host';
$mysqluser = 'user';
$mysqlpass = 'pass';
$mysqldb = 'db';

echo "<?php \$administrationemail = '$administration_email'; \$host = '$mysqlhost'; \$mysql_user = '$mysqluser'; \$mysql_pass = '$mysqlpass'; \$db = '$mysqldb'; ?>";

我用echo测试了它,但是fwrite应该没用。

如果您想要换行,可以在字符串中添加 \ n \ r ,如下所示:

echo str_replace(';',“; \ n \ r”,“&lt;?php \ $ administrationemail ='$ administration_email'; \ $ host ='$ mysqlhost'; \ $ mysql_user ='$ mysqluser'; \ $ mysql_pass ='$ mysqlpass'; \ $ db ='$ mysqldb';?&gt;“);

或者您可以使用heredoc语法(http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc)。请注意,变量仍然需要反斜杠。

$config = <<< CONFIG
<?php
\$host = '$mysqlhost';
\$mysql_user = '$mysqluser';
\$mysql_pass = '$mysqlpass';
\$db = '$mysqldb';
\$administrationemail = '$administration_email';
?>
CONFIG;