【问题标题】:how to write php code to a file with php如何使用php将php代码写入文件
【发布时间】:2013-06-06 11:09:45
【问题描述】:

对于我网站的一部分,我需要能够使用 php.ini 将 php 代码写入文件。 例如:

$filename = "RtestR.php";
$ourFileName =$filename;
$ourFileHandle = fopen($ourFileName, 'w');



$written =  "
    <html>
    <body>
    <?php
    echo \"I like the color \".$_SESSION['color'].\"!!!!\";
    </body>
    </html>

";

fwrite($ourFileHandle,$written);

fclose($ourFileHandle);

但是,它没有创建文件,而是抛出了这个错误:

解析错误:语法错误,意外的 T_ENCAPSED_AND_WHITESPACE,预计第 14 行有 T_STRING 或 T_VARIABLE 或 T_NUM_STRING

我做错了什么以及将php代码写入文件的正确方法是什么?
编辑:
我想我可能需要让自己更清楚......我希望在加载新创建的文件时确定 SESSION。从技术上讲,我不想在此页面上获得会话,而是在我正在创建的页面上!我想将 代码 写入文件,而不是代码的输出!

【问题讨论】:

标签: php fwrite


【解决方案1】:

您缺少结束 PHP 标记 ?&gt;

请考虑一下,您正在做的事情可能不是最好的方法。我能想到的用 PHP 写出 PHP 文件的唯一用例是一些已编译的模板代码或奇怪的缓存。

【讨论】:

  • 我已经考虑过我的选择...这是我可以做我需要实现的唯一方法,我试图找到其他选择但不能。不过谢谢!
  • 那么你没有问对问题。现在我们有一个无聊的语法错误追逐。但我们可以有趣地寻找最佳解决方案。
【解决方案2】:

你可以这样做:-

    <?php

    $filename = "RtestR.php";
    $ourFileName =$filename;
    $ourFileHandle = fopen($ourFileName, 'w');



    $written =  "<html>
                    <body>          
                        I like the color ".$_SESSION['color']."!!!! 
                    </body>
                </html> ";

    fwrite($ourFileHandle,$written);

    fclose($ourFileHandle);

?>

【讨论】:

    【解决方案3】:
    $fp = fopen("test.php", "w");
    $string = '<html>
        <body>
        <?php
        echo "I like the color ".$_SESSION[\'color\']."!!!!";
        ?>
        </body>
        </html>';
    
    fwrite($fp, $string);
    
    fclose($fp);
    

    【讨论】:

    • 你需要在 $string btw 之前做 $fp... 而且,这实际上是我已经拥有的。对不起!
    【解决方案4】:

    你好 pattyd:很高兴见到你 :) + 不要赞成/接受这个答案:

    我建议以这种方式简化:

    $written =  "
        <html>
            <body>
               I like the color \" $_SESSION['color'] \" !!!!
            </body>
        </html>
    ";
    

    【讨论】:

    • 嘿!我想我可能需要让自己更清楚......我希望在加载新创建的文件时确定会话......所以从技术上讲,我不想在这个页面上获得会话,而是在我的页面上创造!这有意义吗,或者你知道我的意思吗?谢谢!
    • 有人为我 +1 ;)
    • :) 那么,有什么问题呢?如果会话“颜色”在运行时存在,它会将其写入文件,就像您打开页面一样。因此,只需确保已设置会话。
    • 等等,你在开玩笑吗?这就是我必须做的全部?哇...所以它编写代码,而不是输出,对吗?以便在新创建的页面上解释代码?如果是这样,你刚刚拯救了我的一天 :) 你是这个意思吗?
    • 是的!虽然,我不记得曾经创建/写入文件。我是说,就是这样。试一试,如果它不起作用,或者你无法在这里获得帮助。在房间里给我打招呼。我们稍后会一起检查
    【解决方案5】:

    终于明白了! 我需要逃避我的$ 符号! 像这样:

    $written =  "
    <html>
    <body>
    <?php
    echo \"I like the color \".\$_SESSION['color'].\"!!!!\";
    </body>
    </html>
    
    ";
    

    不敢相信我没想到这一点;)
    谢谢大家!

    【讨论】:

    • 或者你可以使用单引号,就像“nana.chorage”所建议的那样。这样做的另一个好处是不必在您生成的代码中转义所有双引号。
    • 是的,但我仍然需要更改 $
    • 没有。单引号不评估变量。 "$var" 将包含$var 的内容,"\$var" 将包含“dollar-var”,以及'$var'"$_SESSION['color']" 出错的原因是对数组值的正确访问应该是 "$_SESSION[color]" 而不引用索引,或者 "{$_SESSION['color']}" 在整个 var 表达式周围带有花括号。花括号样式适用于任何表达式,包括对象属性。
    【解决方案6】:

    在这种情况下提及php's HEREDOC 似乎很相关,例如:

    <?php
    $filename      = 'RtestR.php';
    $ourFileName   = $filename;
    $ourFileHandle = fopen($ourFileName, 'w');
    
    $write =  <<<"FILE_CONTENTS"
    <p>I like the color <?={$cleanSessionVars[ 'color' ]};?>.</p>
    
    FILE_CONTENTS;
    
    fwrite($ourFileHandle, $write);
    
    fclose($ourFileHandle);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      • 2016-08-03
      • 1970-01-01
      • 1970-01-01
      • 2016-03-31
      • 1970-01-01
      相关资源
      最近更新 更多