先日、文字列を改行部分で分割し、配列にするという必要があったのでメモ。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行目"
}