Запись новой строки в файл в PHP (перевод строки) - PullRequest
96 голосов
/ 18 июня 2010

Мой код:

$i = 0;
$file = fopen('ids.txt', 'w');
foreach ($gemList as $gem)
{
    fwrite($file, $gem->getAttribute('id') . '\n');
    $gemIDs[$i] = $gem->getAttribute('id');
    $i++;
}
fclose($file);

По какой-то причине он пишет \n в виде строки, поэтому файл выглядит так:

40119\n40122\n40120\n42155\n36925\n45881\n42145\n45880

Из Google'ing он сообщаетмне нужно использовать \r\n, но \r - это возврат каретки, который, кажется, не является тем, что я хочу сделать.Я просто хочу, чтобы файл выглядел так:

40119
40122
40120
42155
36925
45881
42145
45880

Спасибо.

Ответы [ 4 ]

250 голосов
/ 18 июня 2010

Заменить '\n' на "\n".Escape-последовательность не распознается при использовании '.

. См. Руководство .

. Вопрос о том, как писать окончания строк, см. В примечании * 1010.* здесь .По сути, разные операционные системы имеют разные соглашения для концов строк.Windows использует "\ r \ n", операционные системы Unix используют "\ n".Вы должны придерживаться одного соглашения (я бы выбрал «\ n») и открыть ваш файл в двоичном режиме (fopen должно получить «wb», а не «w»).

59 голосов
/ 16 сентября 2011

Используйте PHP_EOL, который выводит \r\n или \n в зависимости от ОС.

56 голосов
/ 18 февраля 2013

PHP_EOL является предопределенной константой в PHP, начиная с PHP 4.3.10 и PHP 5.0.2.См. руководство публикация:

Использование этого сэкономит вам дополнительное программирование на кроссплатформенных разработках

IE.

$data = 'some data'.PHP_EOL;
$fp = fopen('somefile', 'a');
fwrite($fp, $data);

Если вы пройдете через это дважды, вы увидите в 'somefile':

some data
some data
21 голосов
/ 18 июня 2010

Вы также можете использовать file_put_contents():

file_put_contents('ids.txt', implode("\n", $gemList) . "\n", FILE_APPEND);
...