先日、文字列を改行部分で分割し、配列にするという必要があったのでメモ。PHPに限らずJSとかでも必要な場合がある処理ですが、本記事はPHPで行う方法です。

処理の流れ

改行コードを統一する

改行コードは3種類あるため、まずは置換して1種類に統一する。

  • 名称
  • コード
  • CR ( Carriage Return )
  • \r
  • LF ( LineFeed )
  • \n
  • CRLF ( CR + LF )
  • \r\n

今回は全ての改行コードを LF ( \n ) へ置換しているが、統一できるのであれば何でもよい。

$hoge = str_replace(array("\r\n", "\r", "\n"), "\n", $hoge);

分割して配列にする

あとは、explode関数「explode()」を使用して分割するだけ。

$arr = explode("\n", $hoge);

結論

関数を組み合わせてしまえば以下のように1行で実現可能。

$arr = explode("\n", str_replace(array("\r\n", "\r", "\n"), "\n", $hoge));

実装例

以下のコードは、改行を含む文字列をヒアドキュメントを使用して用意。

PHP

$str = <<< EOM
これは1行目
これは2行目
これは3行目
EOM;

$arr = explode("\n", str_replace(array("\r\n", "\r", "\n"), "\n", $str));

var_dump($arr);

出力結果

array(3) {
  [0]=>
  string(18) "これは1行目"
  [1]=>
  string(18) "これは2行目"
  [2]=>
  string(18) "これは3行目"
}

参考

改行コード CR、LF、CRLFの意味と違い – Jill Tone Blog

PHP: explode - Manual