PHP 文本丢失,可能是正则表达式问题


PHP text going missing, possible regex issue?

我正在尝试为我创建的系统创建一个自动安装程序,但唯一的问题是生成一个php文件,其中变量根本不显示。

这是我创建文件的代码

<?php
$content = " <?php
    $sqlHost = '".$host."';
    $sqlUser = '".$user."';
    $sqlPass = '".$pass."';
    $sqlDatabase = '".$db."';
    $sqlTables = array('donate_categories', 'donate_items', 'donate_claim', 'donate_admin');
    $connection = new PDO('mysql:host='.$sqlHost.';dbname='.$sqlDatabase.';charset-utf8', $sqlUser, $sqlPass);
    $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
?>";
$fp = fopen("connection.php", "wb");
fwrite($fp, $content);
$fclose($fp);
?>

如您所见,那里有包装在字符串中的 PHP 代码;但是输出有点奇怪...

<?php
     = 'localhost';
     = 'root';
     = '';
     = 'test';
     = array('donate_categories', 'donate_items', 'donate_claim', 'donate_admin');
     = new PDO('mysql:host='..';dbname='..';charset-utf8', , );
    (PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
?>
没有

一个变量,我已经查找了可能的问题,但我没有找到任何问题。

我现在

无法对此进行测试,但由于您已将文本包装在双引号中,因此您的服务器正在将变量解析为变量$sqlHost, $sqlUser, ...等,并在字符串中查找它们的值。尝试像这样转义值,并让我知道它是否按您的预期工作。

<?php
$content = " <?php
    '$sqlHost = '".$host."';
    '$sqlUser = '".$user."';
    '$sqlPass = '".$pass."';
    '$sqlDatabase = '".$db."';
    '$sqlTables = array('donate_categories', 'donate_items', 'donate_claim', 'donate_admin');
    '$connection = new PDO('mysql:host='.'$sqlHost.';dbname='.'$sqlDatabase.';charset-utf8', '$sqlUser, '$sqlPass);
   '$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
?>";
$fp = fopen("connection.php", "wb");
fwrite($fp, $content);
$fclose($fp);
?>

使用单引号,因为它试图将变量替换到字符串中。

<?php
$content = ' <?php
    $sqlHost = "'.$host.'";
    $sqlUser = "'.$user.'";
    $sqlPass = "'.$pass.'";
    $sqlDatabase = "'.$db.'";
    $sqlTables = array("donate_categories", "donate_items", "donate_claim", "donate_admin");
    $connection = new PDO("mysql:host=".$sqlHost.";dbname=".$sqlDatabase.";charset-utf8", $sqlUser, $sqlPass);
    $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
?>';
$fp = fopen('connection.php', 'wb');
fwrite($fp, $content);
$fclose($fp);
?>

http://php.net/manual/es/language.types.string.php

问候。