ホームページ  >  記事  >  バックエンド開発  >  PHP でファイルに書き込むときに末尾に改行が表示されるのはなぜですか?

PHP でファイルに書き込むときに末尾に改行が表示されるのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-11 12:49:02796ブラウズ

Why Am I Getting Trailing Newlines When Writing to a File in PHP?

PHP の改行の問題: 末尾の改行を克服する

「w」モードで fwrite() を使用して PHP でファイルに書き込む場合、予期しない改行文字が出力に追加されるのはよくあることです。これは、提供されたコードの場合であり、「n」は改行を作成することを意図していましたが、代わりに文字列として表示されました。

n のジレンマ

の理由この独特の動作は、使用されるエスケープ シーケンスにあります。デフォルトでは、一重引用符で囲まれた文字列は、「n」を改行文字ではなく、リテラルのバックスラッシュとその後に続く文字「n」として扱います。これを修正するには、二重引用符で囲まれた文字列を使用し、「n」を使用して改行文字を適切にエスケープする必要があります。

Windows および Unix の行末

考慮すべきもう 1 つの側面行末文字です。オペレーティング システムが異なれば、行末の規則も異なります。

  • Windows: "rn" (キャリッジ リターンの後に改行)
  • Unix ベースのシステム (Linux および macOS を含む): "n " (改行のみ)

適切な行末処理を確保するには、ファイルをバイナリで開くことをお勧めしますモードでは、行末変換を行わずに生データを書き込むことができます。これには、fopen() の 2 番目のパラメーターとして「wb」を使用することが含まれます。

更新されたコード:

これらの修正を実装することで、以下の変更されたコードは各 gem ID を正常に書き込みます。無関係な文字を含まない新しい行:

$i = 0;
$file = fopen('ids.txt', 'wb');
foreach ($gemList as $gem)
{
    fwrite($file, $gem->getAttribute('id') . "\n");
    $gemIDs[$i] = $gem->getAttribute('id');
    $i++;
}
fclose($file);

以上がPHP でファイルに書き込むときに末尾に改行が表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。