Writing a new line to file in PHP (line feed)

PhpNewlineFopenFwriteLinefeed

Php Problem Overview


My code:

$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);

For some reason, it's writing \n as a string, so the file looks like this:

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

From Google'ing it tells me to use \r\n, but \r is a carriage return which doesn't seem to be what I want to do. I just want the file to look like this:

40119
40122
40120
42155
36925
45881
42145
45880

Thanks.

Php Solutions


Solution 1 - Php

Replace '\n' with "\n". The escape sequence is not recognized when you use '.

See the manual.

For the question of how to write line endings, see the note here. Basically, different operating systems have different conventions for line endings. Windows uses "\r\n", unix based operating systems use "\n". You should stick to one convention (I'd chose "\n") and open your file in binary mode (fopen should get "wb", not "w").

Solution 2 - Php

Use PHP_EOL which outputs \r\n or \n depending on the OS.

Solution 3 - Php

PHP_EOL is a predefined constant in PHP since PHP 4.3.10 and PHP 5.0.2. See the manual posting:

Using this will save you extra coding on cross platform developments.

IE.

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

If you looped through this twice you would see in 'somefile':

some data
some data

Solution 4 - Php

You can also use file_put_contents():

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionVIVA LA NWOView Question on Stackoverflow
Solution 1 - PhpArtefactoView Answer on Stackoverflow
Solution 2 - PhpAldarienView Answer on Stackoverflow
Solution 3 - Phpuser1649798View Answer on Stackoverflow
Solution 4 - PhpAlix AxelView Answer on Stackoverflow