如何在php文件中添加新行fwrite

时间:2017-08-29 15:26:59

标签: php fwrite file-writing

我正在写一个plan.php的文件。这是我写的一个php文件。我正在使用\n将新行放在该文件中,但它为我提供了保存输出。

这是代码:

$datetime = 'Monthly';
$expiry = '2017-08-07';
$expiryin = str_replace('ly', '',$datetime);
if($expiryin == 'Month' || $expiryin == 'Year') {
    $time = '+ 1'.$expiryin.'s';
} else {
    $time = '+'.$expiryin.'s';
}
   $expiry_date = date('Y-m-d', strtotime($time, strtotime($expiry)));

$string = createConfigString($expiry_date);

$file = 'plan.php';
$handle = fopen($file, 'w') or die('Cannot open file:  '.$file);
fwrite($handle, $string);

功能是:

function createConfigString($dates){
    global $globalval;

    $str = '<?php \n\n';
    $configarray = array('cust_code','Auto_Renew','admin_name');
    foreach($configarray as $val){
            $str .= '$data["'.$val.'"] = "'.$globalval[$val].'"; \n';
    }
    $str .= '\n';
    return $str;
}

但它提供的输出如下:

<?php   .......something....\n.....\n

所以我的问题是如何将新行放在此文件中。

注意:代码中没有错误。我已经将代码最小化了。

4 个答案:

答案 0 :(得分:2)

众所周知,'\n'只是一个两个符号的字符串\n

您需要"\n"或php核心常量PHP_EOL

function createConfigString($dates){
    global $globalval;

    // change here
    $str = '<?php ' . PHP_EOL . PHP_EOL;
    $configarray = array('cust_code','Auto_Renew','admin_name');
    foreach($configarray as $val){
        // change here 
        $str .= '$data["'.$val.'"] = "'.$globalval[$val].'";' . PHP_EOL;
    }
    // change here
    $str .= PHP_EOL;
    return $str;
}

有关解释字符串http://php.net/manual/en/language.types.string.php#language.types.string.syntax.double

中特殊字符的详细信息

答案 1 :(得分:1)

'替换为"; - )

您可以在PHP手册中了解有关字符串的更多信息:http://docs.php.net/manual/en/language.types.string.php

答案 2 :(得分:1)

如果您在单引号字符串(\n)中使用$var = '\n';,那么它就是 - 字符串\n,而不是换行符。要让PHP解释它实际上应该是换行符,您需要使用双引号($var = "\n";)。

$var = '\n';     // The litteral string \n
$var = "\n";     // Newline

答案 3 :(得分:0)

\n'\n'等单引号内不起作用。您需要使用双引号"\n"。因此,为了您的目的,您需要做出的改变是:

function createConfigString($dates){
  global $globalval;

  $str = '<?php \n\n';
  $configarray = array('cust_code','Auto_Renew','admin_name');
  foreach($configarray as $val){
        $str .= "$data['".$val."'] = '".$globalval[$val]."'; \n"; // change places of double and single quotes
  }
  $str .= "\n"; // change places of double and single quotes
  return $str;
}