Запись новой строки в файл на 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 в виде строки, поэтому файл выглядит так:

40119n40122n40120n42155n36925n45881n42145n45880

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

40119
40122
40120
42155
36925
45881
42145
45880

спасибо.

4 ответов


заменить '\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);