PHPで改行が含まれた文字列を分割して配列にする方法!

PHPで改行が含まれた文字列を改行コードを区切り文字に指定して分割し、配列として結果を得る方法をサンプルコード付きで解説します。

コンテンツ [表示]

  1. 1PHPで改行が含まれた文字列を分割して配列にしたい
  2. 2PHPで改行が含まれた文字列を分割して配列にする方法
  3. 2.1完成したサンプルコード
  4. 2.2改行コードの対応
  5. 2.3空行への対応
  6. 2.4まとめ

PHPで改行が含まれた文字列を分割して配列にしたい

PHPで文字列を分割するexplode関数ですが、もちろん改行が含まれた文字列に対してても適用することが出来ます。

あわせて読みたい
explode関数
PHPのexplode関数は区切り文字を指定して文字列を分割し、配列に変換する関数です。explode関数の構文や使い方をサンプルコード付きで解説します。

しかし改行を含む文字列を分割したい場合、区切り文字に改行コードを指定するには少し工夫が必要です。

例えば改行コードが意図したものではなかったり、空行が含まれているなど綺麗な配列として結果を受け取るためには少し手間がかかります。

今回はPHPで改行が含まれた文字列を分割して配列にする方法をサンプルコード付きで解説します。

Photo byBoskampi

PHPで改行が含まれた文字列を分割して配列にする方法

それではさっそく改行が含まれた文字列を分割して配列にしていきます。

完成したサンプルコード

先に完成したサンプルコードを紹介します。下記のコードで改行が含まれた文字列を分割して配列で受け取る事が出来ます。

それでは上記のサンプルコードについて順番に解説していきます。

改行コードの対応

まず改行コードについて考えましょう。

今回は下記3種類の改行コードに対応させていきます。

  • CR改行(\r
  • LF改行(\n
  • CRLF改行(\r\n
改行コードを区切り文字とする場合は、上記の3種類の改行コードを区切り文字にする必要があります。

このように複数の区切り文字を指定する場合はexplode関数だけでは実現できず、今回は下記の複数の区切り文字に対応した自作の関数を利用しています。

複数の区切り文字に対応した関数

// 複数の区切り文字を指定できる関数
function multiexplode ($delimiters, $string) {
	$tmp = str_replace($delimiters, $delimiters[0], $string);
	return explode($delimiters[0], $tmp);
}
あわせて読みたい
PHPで複数の区切り文字で文字列を分割する方法!のイメージ
PHPで複数の区切り文字で文字列を分割する方法!
PHPで文字列の分割といえばexplode関数ですが、explode関数は複数の区切り文字を指定することが出来ません。今回はPHPで複数の区切り文字を指定して文字列を分割し、配列で得る方法をサンプルコード付きで解説します。

空行への対応

空行が含まれる場合は、今回は取り除いていきたいと思います。

各行に対して、空白文字でつめて、文字数が0であれば配列から除外しています。

配列の空白文字を詰めて、空白行を消すコード

// 空白文字を詰める
$ret = array_map('trim', $ret);

// 空行を削除
$ret = array_filter($ret, 'strlen');

まとめ

いかがでしたでしょうか。PHPで改行が含まれた文字列を分割する方法を紹介しました。

文字列の分割はプログラミングでは本当によく使われる方法で、そのやり方を知っておくといざという時に調べる工数が削減されますし、今回のようなexplode関数で完結しない、少し変わった分割方法だと詰まった時にかかる時間も大きくなります。

ぜひ今回の内容を参考にして頂ければと思います。

GeekHive採用サイト

関連記事