1

明らかに:

\n = CR (Carriage Return) // Used as a new line character in Unix
\r = LF (Line Feed) // Used as a new line character in Mac OS
\r\n = CR + LF // Used as a new line character in Windows
(char)13 = \n = CR // Same as \n

しかし、HTMLテキストエリアの場合、phpスクリプトによって送信および解析されると、プラットフォームに関係なく、すべての新しい行が \r\n に変換されるとも聞きました

これは本当ですか、これに頼ることができますか、それとも完全に間違っていますか?

すなわち。新しい行に基づいてexplode()を実行したい場合、ユーザーがMac、PCなどを使用しているかどうかに関係なく、'\r\n'を区切り文字として使用できますか?

4

3 に答える 3

2

すべての改行は仕様\r\nによって変換される必要があります。

explode("\r\n", $theContent)したがって、使用するプラットフォームに関係なく、簡単に実行できます。

PS

\r古い(より古い)Macでのみ使用されます。現在、Mac では *nix スタイルの改行 ( \n) も使用されています。

于 2012-04-04T21:23:20.423 に答える
1

正規表現を使用して文字列を分割する preg_split を試すことができます。この正規表現内で、3 つの新しい行バリアントすべてに一致させることができます。

$ArrayOfResults = preg_split( '/\r\n|\r|\n/', $YourStringToExplode );
于 2013-07-25T09:22:55.940 に答える
0

それはあなたが何を達成したいかによります。最終的にHTMLとして表示/フォーマットするためにこれを行う場合は、nl2br()関数を使用するか、次のようにstr_replaceを使用することもできます。

$val = str_replace( array("\n","\r","\r\n"), '<br />', $val );

すべての行の配列を取得するだけの場合は、爆発に 3 文字すべて ("\n"、"\r"、"\r\n") を使用することをお勧めします。

于 2012-04-04T21:20:31.217 に答える