我正在创建一个设置系统,用户输入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 = ''; =''; ?>
答案 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;