Запись новой строки в файл в 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
Спасибо.
Ответы
Ответ 1
Замените '\n'
на "\n"
. После использования '
escape-последовательность не распознается.
Смотрите manual.
Вопрос о том, как писать концы строк, см. в примечании здесь. В принципе, разные операционные системы имеют разные соглашения для окончаний строк. Windows использует "\ r\n", операционные системы на основе UNIX используют "\n". Вы должны придерживаться одного соглашения (я выбрал "\n" ) и откройте файл в двоичном режиме (fopen
должен получить "wb", а не "w" ).
Ответ 2
Используйте PHP_EOL
, который выводит \r\n
или \n
в зависимости от ОС.
Ответ 3
PHP_EOL является предопределенной константой в PHP с PHP 4.3.10 и PHP 5.0.2. См. Публикацию manual:
Используя это, вы сэкономите дополнительное кодирование в кросс-платформенных разработках.
IE.
$data = 'some data'.PHP_EOL;
$fp = fopen('somefile', 'a');
fwrite($fp, $data);
Если вы зацикливаете это дважды, вы увидите в "somefile":
some data
some data
Ответ 4
Вы также можете использовать file_put_contents()
:
file_put_contents('ids.txt', implode("\n", $gemList) . "\n", FILE_APPEND);