Как поставить новую строку в php файле fwrite

Я пишу файл, который 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

Поэтому мой вопрос заключается в том, как поместить новую строку в этот файл.

Замечания: Там нет ошибки в коде. Я свернул код для размещения здесь.

-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

2

Другие решения

замещать ' с " 😉

Вы можете узнать больше о строках в руководстве по PHP: http://docs.php.net/manual/en/language.types.string.php

1

Если вы используете \n внутри строки в одинарных кавычках ($var = '\n';), это будет только что — литеральная строка \nи не перевод строки. Чтобы PHP интерпретировал, что это должен быть символ новой строки, вам нужно использовать двойные кавычки ($var = "\n";).

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

\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;
}
0
По вопросам рекламы [email protected]