最終更新日: 2021年1月5日
PHPで改行が含まれた文字列を分割して配列にする方法!
PHPで改行が含まれた文字列を改行コードを区切り文字に指定して分割し、配列として結果を得る方法をサンプルコード付きで解説します。
PHPで改行が含まれた文字列を分割して配列にしたい
PHPで文字列を分割するexplode
関数ですが、もちろん改行が含まれた文字列に対してても適用することが出来ます。
しかし改行を含む文字列を分割したい場合、区切り文字に改行コードを指定するには少し工夫が必要です。
例えば改行コードが意図したものではなかったり、空行が含まれているなど綺麗な配列として結果を受け取るためには少し手間がかかります。
今回はPHPで改行が含まれた文字列を分割して配列にする方法をサンプルコード付きで解説します。
PHPで改行が含まれた文字列を分割して配列にする方法
それではさっそく改行が含まれた文字列を分割して配列にしていきます。
完成したサンプルコード
先に完成したサンプルコードを紹介します。下記のコードで改行が含まれた文字列を分割して配列で受け取る事が出来ます。
それでは上記のサンプルコードについて順番に解説していきます。
改行コードの対応
まず改行コードについて考えましょう。
今回は下記3種類の改行コードに対応させていきます。
- CR改行(
\r
) - LF改行(
\n
) - CRLF改行(
\r\n
)
このように複数の区切り文字を指定する場合は
explode
関数だけでは実現できず、今回は下記の複数の区切り文字に対応した自作の関数を利用しています。複数の区切り文字に対応した関数
// 複数の区切り文字を指定できる関数
function multiexplode ($delimiters, $string) {
$tmp = str_replace($delimiters, $delimiters[0], $string);
return explode($delimiters[0], $tmp);
}
空行への対応
空行が含まれる場合は、今回は取り除いていきたいと思います。
各行に対して、空白文字でつめて、文字数が0であれば配列から除外しています。
配列の空白文字を詰めて、空白行を消すコード
// 空白文字を詰める
$ret = array_map('trim', $ret);
// 空行を削除
$ret = array_filter($ret, 'strlen');
まとめ
いかがでしたでしょうか。PHPで改行が含まれた文字列を分割する方法を紹介しました。
文字列の分割はプログラミングでは本当によく使われる方法で、そのやり方を知っておくといざという時に調べる工数が削減されますし、今回のようなexplode
関数で完結しない、少し変わった分割方法だと詰まった時にかかる時間も大きくなります。
ぜひ今回の内容を参考にして頂ければと思います。