2014-09-03 4 views
1

Я пытаюсь писать в текстовом файле с помощью PHP. Каждая строка $result должна быть в новой строке в txt-файле, но когда я набираю эту строку, все строки $result находятся на одной строке. В чем проблема ?Как написать новую строку в текстовом файле с помощью PHP?

Вот мой код:

$result=date("Y.m.d").'!'.$_POST['name'].'!'.$_POST['price'].'!'.$selectedGroup."\n"; 
file_put_contents('data.txt', $result,FILE_APPEND) 

ответ

3

Использование PHP_EOL предопределенная константа:

file_put_contents('data.txt', $result . PHP_EOL, FILE_APPEND); 

От manual:

PHP_EOL (строка)

Правильный символ «Конец линии» для этой платформы.

Выпускается с PHP 4.3.10 и PHP 5.0.2

Чтобы проверить введенные данные, вы можете попытаться вывести данные файла с file() (он должен правильно определить разделения линии):

print_r(file('data.txt')); 

Если в нем содержится более одного элемента, ваши строки разделяются.

+0

Кажется, он уже использует «\ n» –

+0

Его проблема, я считаю, заключается в его проверке результата, а не в его фактическом генерации. – Slavic

+0

Он работает, но он делает пустую строку в первой строке файла. Как этого избежать? – Montoolivo

1

Проблема в том, что ваш редактор (windows notepad?) Не обрабатывает \n как новую строку.

Там есть вид новых линий

windows: \r\n 

linux/unix: \n 

mac: \r 
+0

Мой редактор Notepad ++. – Montoolivo

+0

@Montoolivo. Затем следует установить тип новой строки. – xdazz

1

Как вы проверочных результат? Открываете ли вы файл в редакторе? Если вы делаете это в Windows, обратите внимание, что некоторые редакторы будут показывать «\ r \ n» в качестве новой строки, рассматривая «\ n» как пробел или просто игнорируя его.

+0

Если я положил «\ r \ n» вместо «\ n», он работает. – Montoolivo

+0

Вам нужно знать, кто является целевой аудиторией вашего сгенерированного файла. Возможно, вам понадобится версия Unix «\ n», а не версия Windows новой строки. – Slavic

Смежные вопросы