web-dev-qa-db-ja.com

\ r \ n&\ n&\ rで文字列を一度に分解しますか?

文字列を行ごとに分割したいのですが、使用されているすべての主要な改行文字に基づいて文字列を作成したいと思います。

  • \ n
  • \ r\n
  • \ r

そして、各行を含む配列を返します。

28
Ryan

正規表現と preg_split 代わりに:

$lines = preg_split('/\n|\r\n?/', $str);

正規表現\n|\r\n?は、LFまたは、LFが後に続くCRのいずれかに一致します。

39
Gumbo

preg_split('/\R/', $str);

PHP preg_split()、preg_match、およびpreg_replaceでは、\Rは、あらゆる種類のすべての改行に一致します。

http://www.pcre.org/pcre.txt

デフォルトでは、パターンのシーケンス\Rは、行末シーケンスとして選択されているものはすべて、Unicodeの改行シーケンスと一致します。指定した場合

--enable-bsr-anycrlf

\RCRLF、またはCRLFにのみ一致するように、デフォルトが変更されています。 PCREのビルド時に選択されたものは、ライブラリ関数が呼び出されたときにオーバーライドできます。

25
jerrygarciuh

次のような処理を行って、すべての発生する改行文字を一意のプレースホルダーで置き換え、配列内の文字列を分解できます。

$my_string = preg_replace(array('/\n/', '/\r/'), '#PH#', $my_string);
$my_array = explode('#PH', $my_string);
1
lucke84