PHPでファイルに新しい行を書き込む(改行)


109

私のコード:

$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

グーグルのことから\r\n、それを使用するように指示されますが、\r私がやりたいようには思えないキャリッジリターンです。ファイルを次のようにするだけです。

40119
40122
40120
42155
36925
45881
42145
45880

ありがとう。

回答:


278

交換してください'\n'"\n"。エスケープシーケンスは使用時に認識されません'

マニュアルを参照してください。

行末の書き方の問題については、注を参照してくださいここに。基本的に、オペレーティングシステムが異なれば、行末の規則も異なります。Windowsは「\ r \ n」を使用し、UNIXベースのオペレーティングシステムは「\ n」を使用します。1つの規則(私は "\ n"を選択しました)を守り、ファイルをバイナリモードで開きます(fopen"w"ではなく "wb"を取得する必要があります)。


「\ r \ n」を「\ n」に変更しました。ありがとう。
csonuryilmaz

今私のコードは両方"を使用し'、それは私を困らせます
Mr. PizzaGuy

実際、「」を使用すると\ nが強調表示されますが、「」を使用すると強調表示されないことに実際に気づくでしょう。(これは、エディターが構文強調表示を使用している場合、私はSublime Text 3です)
DarkVeneno

68

OSに応じて、PHP_EOLどの出力を使用する\r\n\n


4
問題が発生することはありません。\n特定のOSでファイルを開く場合を除き、常に使用してください。そうする場合は、PHPを実行しているOSではなく、そのOSの改行の組み合わせを使用してください(PHP_EOL)。
Alix Axel

60

PHP_EOLは、PHP 4.3.10およびPHP 5.0.2以降、PHPで事前定義された定数です。マニュアルを見る投稿を:

これを使用すると、クロスプラットフォーム開発で余分なコーディングを省くことができます。

IE。

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

これを2回ループすると、「somefile」に次のように表示されます。

some data
some data

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.