Запись новой строки в файл на PHP

Мой код:

$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'е он говорит мне использовать \r\n , но \r – это возврат каретки, который, похоже, не является тем, что я хочу сделать. Я просто хочу, чтобы файл выглядел так:

 40119 40122 40120 42155 36925 45881 42145 45880 

Благодарю.

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

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

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

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

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 

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

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