PHP создать текстовый файл. Переводы строк неправильны - PullRequest
2 голосов
/ 26 августа 2011

Я использую php для создания файла, который можно загрузить при нажатии на ссылку.

Многие варианты кода были опробованы.Нет причин, по которым это не должно работать:

$output = 'test    spaces, test 
enter, test n, \ntest nr, \n\rtest nt, \n\ttest html-br, <br /><br>end of line';
$output .= '\r\n';
$output .= 'blahblah';
header('Content-type: text/plain');
header('Content-Disposition: attachment;filename="'.$filename.'.txt"');
print $output;
exit;

Но возвращаемый файл начинается с двух пробелов, которые я не вставил.Никаких разрывов строк на \ r \ n.

Если я открою файл в блокноте ++, я получу разрыв строки на «enter».Вывод в загруженном текстовом файле выглядит следующим образом между кавычками:

  In notepad++
  "  test    spaces, test 
  enter, test n, \ntest nr, \n\rtest nt, \n\ttest html-br, <br /><br>end of line\r\nblahblah"

Итак.Что я делаю неправильно?Вывести что-то перед заголовком, чтобы заголовок не работал?

ОБНОВЛЕНИЕ: Спасибо за помощь.Два правильных ответа в одно и то же время.Первый ответ при заказе «самый старый первый» помечается как правильный ответ.Использование одинарных кавычек решило проблему.

Проблема с двумя пустыми пробелами в начале вывода не связана с кодом / php в данном примере.Это артефакт из используемого фреймворка.

Ответы [ 2 ]

8 голосов
/ 26 августа 2011

Новые строки (с использованием \n & \r) распознаются только в двойных кавычках, а не в одинарных.

4 голосов
/ 26 августа 2011

Вместо этого используйте двойные кавычки, одинарные кавычки не распознают новые строки

// Outputs: This will not expand: \n a newline
echo 'This will not expand: \n a newline';

// Outputs: Variables do not $expand $either
echo 'Variables do not $expand $either';

, поэтому будет выглядеть как

$output = "test    spaces, test 
enter, test n, \ntest nr, \n\rtest nt, \n\ttest html-br, <br /><br>end of line";
$output .= "\r\n";
$output .= 'blahblah';
header('Content-type: text/plain');
header('Content-Disposition: attachment;filename="'.$filename.'.txt"');
print $output;
exit;
...