PHPで文字列の改行を配列に変換する方法
PHPでテキストの改行を配列に変換する方法についてまとめました。
改行を配列に変換するにはexplode関数を使う
PHPは、テキストの特定の文字列を区切りに、配列に変換するexplode関数があります。
基本的にはこのexplode関数を使用するだけで、配列に変換が可能です。
サンプルコード
$text = 'あいうえお かきくけこ さしすせそ たちつてと なにぬねの はひふへほ や ゆ よ らりるれろ わ を ん'; //改行の特殊文字をすべてのパターンに対応できるように統一 $text = str_replace(["\r\n", "\r", "\n"], "\n", $text); //配列に変換 $aryHoge = explode("\n", $text); print_r($aryHoge);
Array
(
[0] => あいうえお
[1] => かきくけこ
[2] => さしすせそ
[3] =>
[4] => たちつてと
[5] => なにぬねの
[6] =>
[7] => はひふへほ
[8] => や ゆ よ
[9] => らりるれろ
[10] => わ を ん
)
(
[0] => あいうえお
[1] => かきくけこ
[2] => さしすせそ
[3] =>
[4] => たちつてと
[5] => なにぬねの
[6] =>
[7] => はひふへほ
[8] => や ゆ よ
[9] => らりるれろ
[10] => わ を ん
)
注意点として、改行を示す特殊文字は""(ダブルクオーテーション)で囲う必要があります。
間違っても''(シングルクオーテーション)で囲わないようにしましょう。
改行を配列に変換後、空白の配列を削除したい場合
explodeで配列に変換後、空白の改行を削除したい場合は、array_filter関数を使用します。
array_filterと文字数を取得するstrlenで、各行にstrlen関数を通し、返り値がfalse(=0)の配列を削除する処理を行います。
最終結果の配列を連番に振り直したい場合は、さらにarray_valuesという関数を通す必要があります。
キーを維持する
サンプルコード
$text = 'あいうえお かきくけこ さしすせそ たちつてと なにぬねの はひふへほ や ゆ よ らりるれろ わ を ん'; //改行の特殊文字をすべてのパターンに対応できるように統一 $text = str_replace(["\r\n", "\r", "\n"], "\n", $text); //配列に変換 $aryHoge = explode("\n", $text); //空白の配列を削除 $aryHoge = array_filter($aryHoge, "strlen"); print_r($aryHoge);
Array
(
[0] => あいうえお
[1] => かきくけこ
[2] => さしすせそ
[4] => たちつてと
[5] => なにぬねの
[7] => はひふへほ
[8] => や ゆ よ
[9] => らりるれろ
[10] => わ を ん
)
(
[0] => あいうえお
[1] => かきくけこ
[2] => さしすせそ
[4] => たちつてと
[5] => なにぬねの
[7] => はひふへほ
[8] => や ゆ よ
[9] => らりるれろ
[10] => わ を ん
)
連番に振り直す
サンプルコード
$text = 'あいうえお かきくけこ さしすせそ たちつてと なにぬねの はひふへほ や ゆ よ らりるれろ わ を ん'; //改行の特殊文字をすべてのパターンに対応できるように統一 $text = str_replace(["\r\n", "\r", "\n"], "\n", $text); //配列に変換 $aryHoge = explode("\n", $text); //空白の配列を削除 $aryHoge = array_filter($aryHoge, "strlen"); //連番に振り直す $aryHoge = array_values($aryHoge); print_r($aryHoge);
Array
(
[0] => あいうえお
[1] => かきくけこ
[2] => さしすせそ
[3] => たちつてと
[4] => なにぬねの
[5] => はひふへほ
[6] => や ゆ よ
[7] => らりるれろ
[8] => わ を ん
)
(
[0] => あいうえお
[1] => かきくけこ
[2] => さしすせそ
[3] => たちつてと
[4] => なにぬねの
[5] => はひふへほ
[6] => や ゆ よ
[7] => らりるれろ
[8] => わ を ん
)
ディスカッション
コメント一覧
まだ、コメントがありません