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

时间:2014-12-19 23:14:43

标签: php

我试图为我创建的系统创建一个自动安装程序,但唯一的问题是生成一个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);
?>

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

2 个答案:

答案 0 :(得分:4)

我现在无法对此进行测试,但由于您已将文本用双引号括起来,因此您的服务器将变量$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);
?>

答案 1 :(得分:0)

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

<?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

问候。