Мой код:
$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);