質問

私のコード:

$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". 。エスケープシーケンスは、使用するときに認識されません '.

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

ラインエンディングの書き方の質問については、メモを参照してください ここ. 。基本的に、異なるオペレーティングシステムには、ラインエンディングに異なる規則があります。 Windowsは「 r n」を使用し、UNIXベースのオペレーティングシステムは「 n」を使用します。 1つのコンベンション(「 n」を選択しました)に固執し、バイナリモードでファイルを開く必要があります(fopen 「W」ではなく「WB」を取得する必要があります。

他のヒント

使用する PHP_EOL 出力 \r\n また \n OSに依存します。

PHP_EOLは、PHP 4.3.10およびPHP 5.0.2以降のPHPで定義された定数です。を参照してください マニュアル 投稿:

これを使用すると、クロスプラットフォーム開発の追加コーディングが節約されます。

すなわち。

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

これをループして2回ループした場合、「SomeFile」で表示されます。

some data
some data

使用することもできます file_put_contents():

file_put_contents('ids.txt', implode("\n", $gemList) . "\n", FILE_APPEND);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top