\n と \r の違いは何ですか (OS と関係があることはわかっています)。クロスプラットフォームで機能する改行をエコーする最良の方法は何ですか?
編集: Jarod に応えて、.txt ログ ファイルに改行をエコーするために ths を使用しますが、HTML マクロをページにエコーするなどの目的で将来使用することは確実です。
\n と \r の違いは何ですか (OS と関係があることはわかっています)。クロスプラットフォームで機能する改行をエコーする最良の方法は何ですか?
編集: Jarod に応えて、.txt ログ ファイルに改行をエコーするために ths を使用しますが、HTML マクロをページにエコーするなどの目的で将来使用することは確実です。
PHP_EOL
PHP スクリプトが実行されているオペレーティング システムの正しい改行に自動的に設定される定数を使用します。
この定数は PHP 5.0.2 以降で宣言されていることに注意してください。
<?php
echo "Line 1" . PHP_EOL . "Line 2";
?>
下位互換性:
if (!defined('PHP_EOL')) {
switch (strtoupper(substr(PHP_OS, 0, 3))) {
// Windows
case 'WIN':
define('PHP_EOL', "\r\n");
break;
// Mac
case 'DAR':
define('PHP_EOL', "\r");
break;
// Unix
default:
define('PHP_EOL', "\n");
}
}
\n
Linux/Unix の改行です。\r
古典的な Mac OS (OS X 以外) の改行です。Mac OS X は上記の unix を使用します\n
。\r\n
Windows の改行です。私は通常\n
、Linux システムで使用するだけで、ほとんどの Windows アプリは問題なく処理できます。
Jarod の回答には、さまざまな OS での \r \n の正しい使用法が含まれています。ここにいくつかの歴史があります:
「キャリッジ リターン」と「ライン フィード」という用語は、モニターとキーボードを備えた端末の代わりにテレタイプが使用されていた時代にさかのぼります。テレタイプまたはタイプライターに関して、「キャリッジ リターン」はカーソルを移動してテキストの最初の列に戻ることを意味し、「ライン フィード」はローラーを回転させて次の行に移動することを意味しました。その時点で、区別は理にかなっています。現在、テキスト行の終わりを表す \n、\r、\r\n の組み合わせは完全に恣意的です。
PHP4のPHP_EOLには下位互換性は必要ありません。
PHP_EOLの一定の可用性に関するMooreのステートメントを修正する必要があります:「...はPHP5.0.2以降で宣言されています。」
いいえ、PHP4.3.10から使用されています。それよりも少ないものをまだ実行している人は、とにかくビジネスに参加するべきではありません。今日の時点で、PHP5未満のものを使用することはできません。
PHPマニュアルから:「PHP_EOLこのプラットフォームの正しい「行末」記号。PHP4.3.10およびPHP5.0.2以降で使用可能」。