【问题标题】:How to make variables work in Single Quotes properly?如何使变量在单引号中正确工作?
【发布时间】:2014-09-10 13:51:18
【问题描述】:

我希望用它们的值填充这些变量,但是在 config.php 文件中它自己编写变量名,我希望在 config.php 文件中使用单引号将 $host 转换为 'localhost'。

    $handle = fopen('../config.php', 'w');
    fwrite($handle, '
    <?php
    $connection = mysql_connect({$host}, {$user}, {$pass});
    ?>
    ');
    fclose($handle);

【问题讨论】:

标签: php file-io quotes


【解决方案1】:

你不能。单引号do not interpolate variables。这是将它们与双引号区分开来的主要因素。请改用双引号(或其他内容,例如 sprintf)。

【讨论】:

  • 我想写config.php文件你能帮我怎么写吗?打印变量。
  • @harsimarriar96 Quentin 已经回答了你的问题,你在正确的路线上,所以去尝试自己做吧。如果您还有其他问题:创建一个新问题。
【解决方案2】:

如果您在单引号内使用变量,它们将被表示为字符串而不是变量。

你也可以这样做:

// Get from $_SESSION (if started)
$host = $_SESSION['host'];
$user = $_SESSION['user'];
$pass = $_SESSION['pass'];

$handle = fopen('../config.php', 'w');

// try with the {}
$content = '<?php $connection = mysql_connect('."{$host},"."{$user},"."{$pass});".'?>';

// or you can try this too, but comment out the other one:
$content = '<?php $connection = mysql_connect('."\"$host\","."\"$user\","."\"$pass\");".'?>';

fwrite($handle, $content);
fclose($handle);

【讨论】:

  • 它没有显示 $host、$user、$pass 的值。它给了我 mysql_connect(,,);其余代码工作正常。
  • 你定义了$host、$user和$pass的值了吗?也许它们是空变量。 @harsimarriar96
  • 我从会话中得到了一些值。
  • 尝试使用print_r() 打印$_SESSION 变量并找到用于'host'、'user'和'pass'值的索引。
  • 这行得通,我错过了 session_start();但是还有一个问题,config.php中的值不在''单引号内。
【解决方案3】:

如果你使用双引号,它会起作用:

$handle = fopen('../config.php', 'w');
fwrite($handle, "
<?php
$connection = mysql_connect({$host}, {$user}, {$pass});
?>
");
fclose($handle);

【讨论】:

  • 当我尝试使用双引号时,它也会读取 $connection 变量,我希望它只读取 $host、$user、$pass,其余的应该按原样写入。
  • 在$connection前面放一个\来转义,避免php把它当作变量读取。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-08
相关资源
最近更新 更多