Я пишу файл, который 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
Поэтому мой вопрос заключается в том, как поместить новую строку в этот файл.
Замечания: Там нет ошибки в коде. Я свернул код для размещения здесь.
Как все уже упоминали '\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
замещать '
с "
😉
Вы можете узнать больше о строках в руководстве по PHP: http://docs.php.net/manual/en/language.types.string.php
Если вы используете \n
внутри строки в одинарных кавычках ($var = '\n';
), это будет только что — литеральная строка \n
и не перевод строки. Чтобы PHP интерпретировал, что это должен быть символ новой строки, вам нужно использовать двойные кавычки ($var = "\n";
).
$var = '\n'; // The litteral string \n
$var = "\n"; // Newline
\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;
}