【问题标题】:Write a PHP file in a PHP在 PHP 中编写 PHP 文件
【发布时间】:2016-07-11 16:53:35
【问题描述】:

我正在尝试从 php 创建一个新的 php 文件。

我的最终 php 文件必须如下所示:

<?
    $text_1 = "Text";
    $text_2 = "Banana";
?>

其实我生成的php是这样的:

$file = fopen("../lang/_____fr-CA.php", "w") or die("Unable to open file!");

<?
    $datas .= '$text_1 = "Text"; \n ';
    $datas .= '$text_2 = "Banana"; \n ';

    $datas = nl2br("&lt;? \n".$datas."\n ?&gt;");

    fwrite($file, $datas);
    fclose($file);
?>

我的问题是生成的 php 看起来像这样:

&lt;? <br />
$text_1 = "Text"; \n$text_2 = "Banana"; \n<br />
 ?&gt;

【问题讨论】:

标签: php


【解决方案1】:

您需要编写所需的数据。在您的情况下,您正在编写 HTML。您应该编写准确的 PHP 代码,就像它应该出现的那样。你不需要nl2br。您还需要了解newlines must be in double quotes。最后,?&gt; 是可选的,对于纯 PHP 文件,我建议您省略它。

$datas = "<?php \n" .
    '$text_1 = "Text"; ' . "\n" .
    '$text_2 = "Banana";';
fwrite($file, $datas);

【讨论】:

  • 你帮了我很多。谢谢。
【解决方案2】:

您需要将\n 括在双引号中,它不会被视为单引号中的换行符。

出于兼容性目的,您不应使用短打开标记&lt;?,而应仅使用&lt;?php

【讨论】:

    【解决方案3】:

    你可以使用像 heredoc 这样更“优雅”的方式来编写你的文件:

    <?
      $datas <<<eof
    <?php
      $text_1 = "Text";
      $text_2 = "Banana";
    ?>
    eof;
    
      fwrite($file, $datas);
      fclose($file);
    ?>
    

    【讨论】:

    • 如果可能的话,我会避免使用 Heredoc。这是一种糟糕的编码方式。
    • 你为什么这么说?如果您需要为文件编写代码,Heredoc 会更加清晰,当然,heredoc 的名称说明了一切:en.m.wikipedia.org/wiki/Here_document 所以,如果我说绝对 heredoc 是更正确的方法,请不要恨我去吧。
    • 最大的缺点是不能缩进heredoc。即使在一个函数内。我不恨你(我什至没有投反对票),我只是不推荐它
    • 但是正如链接的维基百科页面所说:这是文件中的文件,没有充分的理由继续缩进,会有很多问题。您将如何决定何时缩进文件输出以及何时不与您的生成器代码相关?如果你选择总是缩进,你很快就会看到生成的代码,由于生成器的缩进,这些代码的缩进次数比实际生成的代码要多得多,这将使代码比简单的heredoc更难阅读.顺便说一句,我认为任何人都会选择更舒适的编码方式。
    猜你喜欢
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多