PHP Echoの改行
-
05-07-2019 - |
質問
\ nと\ rの違い(OSと関係があることは知っています)、およびクロスプラットフォームで機能する改行をエコーする最良の方法は何ですか?
編集: Jarodに応答して、.txtログファイルで改行をエコーするためにthsを使用しますが、将来的にはHTML makupをページにエコーするなど。
解決
-
\ n
はLinux / Unixの改行です。 -
\ r
は、古典的なMac OS(非OS X)の改行です。 Mac OS Xは上記のUnix\ n
を使用します。 -
\ r \ n
はWindowsの改行です。
通常、Linuxシステムでは \ n
を使用しますが、ほとんどのWindowsアプリはそれをうまく処理します。
他のヒント
PHPスクリプトが実行されているオペレーティングシステムの正しい改行に自動的に設定される PHP_EOL
定数を使用します。
この定数は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");
}
}
Jarodの回答には、さまざまなOSでの\ r \ nの正しい使用法が含まれています。ここにいくつかの歴史があります:
- \ r、または10進コード13のASCII文字は、「キャリッジリターン」の後にCRという名前が付けられます。
- \ n、または10進コード10のASCII文字は、「改行」、または「改行」の後にLFという名前が付けられます。
用語「キャリッジリターン」および「改行」モニターとキーボードを備えた端末の代わりにテレタイプが使用されたときまで遡ります。テレタイプまたはタイプライターに関しては、「キャリッジリターン」カーソルを移動してテキストの最初の列に戻ることを意味し、「改行」はローラーを回転させて次のラインに到達することを意味しました。その時、区別は理にかなっています。今日、テキスト行の終わりを表す\ n、\ r、\ r \ nの組み合わせは完全に任意です。
PHP4のPHP_EOLには後方互換性は必要ありません。
一定のPHP_EOLの可用性に関するMooreのステートメントを修正する必要があります:&quot; ...はPHP 5.0.2以降で宣言されています。&quot;。
いいえ、PHP 4.3.10以降です。まだそれ以下のものを実行している人は、とにかくビジネスにいるべきではありません。今日の時点では、PHP 5未満のものは使用しないでください!
PHPマニュアルから:&quot; PHP_EOLこのための正しい「行末」記号プラットフォーム。 PHP 4.3.10およびPHP 5.0.2以降で使用可能&quot;。