2017-08-29 120 views
-2

我正在写一个文件是plan.php。这是一个我正在写的php文件。我正在使用\n将新行放在该文件中,但它给我保存输出。如何把新文件放在php文件中fwrite

这里是代码:

$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 

所以我的问题是如何把此文件中有新行。

注意:代码没有错误。我已经最小化了放在这里的代码。

+5

更换''\ n''到' “\ n”'。有时阅读手册。你甚至可以使用'PHP_EOL'常量。 –

+0

@u_mulder替换它后给我错误,因为我在字符串的开头使用'$'。 –

+2

您也可以使用'PHP_EOL'替代'\ n'。 –

回答

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

如果使用\n单引号字符串($var = '\n';)内,这将是这一点 - 输出字符串\n,而不是换行符。为了解释PHP实际上应该是换行符,您需要使用双引号($var = "\n";)。

$var = '\n';  // The litteral string \n 
$var = "\n";  // Newline 
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; 
}