【PHP explode】文字列を分割する方法を3つのポイントで簡単理解

文字列を分割するにはどうすればいいの?
文字列を指定した区切り文字で分割したい
CSVデータや改行された文字列を配列に変換したい

こんにちは。フリーランスエンジニアとして働く傍ら、スキルを生かして専門記事のライターとしても活躍しているワキザカ サンシロウです!

皆さんはあるルールに基づいた文字列を意図したとおりに配列に変換したいと思ったことはありませんか?例えば、カンマ(,)で区切られた文字列を分割したり、1行ごとのデータを配列に変換するような場合です。

これらの文字列の分割操作はexplode関数を使うことで実現できます。

この記事ではそんなexplode関数について、以下の内容について解説していきます。

  • explode関数とは
  • explode関数を理解する3ステップ
  • explode関数以外の文字列分割方法

explode関数以外の文字列分割法についても解説していますので、ぜひ参考にしてください。

PHPのexplode関数とは

まずはexplode関数の概念を説明します。explode関数とは、対象の文字列を指定した文字列で分割するための関数です。

例えば、「2019/01/31」から「2019」のみ取得したい場合を考えてみましょう。explode関数を使うと、「2019/01/31」をスラッシュ(/)で区切ることで、次の三つの要素に分割することができます。

  • 要素1:2019
  • 要素2:01
  • 要素3:31

explode関数は返り値に配列として値が戻ってくるため、要素数に「0」を指定することで「2019」を取得することができます。このように、指定した文字列で文字列を区切り、要素を指定して値を利用するための仕組みとして利用できます。

PHPのexplode関数を理解する3つのステップ

その1 explode関数の構文

ここではexplode関数の具体的な書き方について見ていきましょう。

explode関数の構文

explode ( 区切り文字列 , 対象の文字列 ,最大要素数 )
    explode関数の引数

  • 第一引数には対象の文字列を分割するための区切り文字を指定します。
  • 第二引数には対象の文字列を指定します。
  • 第三引数を指定した場合は、返り値の配列の最大要素数を指定できます。
    explode関数の返り値

  • 対象文字列を区切り文字で分割した文字列の配列を返します。
  • 第三引数の最大要素数を指定した場合は要素数分の配列を返します。

関数の書き方だけではいまいちイメージできないかもしれません。次項では具体的な書き方に関してご紹介します。

その2 explode関数の使い方

では実際にexplode関数のプログラムを作って動作を確認してみましょう。

さきほどの「2019/01/31」から「2019」を取得するケースを例に、実際のコードをご紹介します。以下のプログラムでは文字列に対して区切り文字スラッシュ「/」を指定して文字列を分割しています。

サンプルプログラム

<?php

// 文字列を分割
$arrayDayList = explode ("/","2019/01/31");

// 結果を出力
print_r($arrayDayList);

?>

実行結果:

Array
(
    [0] => 2019
    [1] => 01
    [2] => 31
)

このようにスラッシュ「/」で区切られたすべての要素が返り値となっていることがわかりますね。

では次に、最大要素数を指定してみましょう。第三引数を指定した場合は次のように分割されます。

サンプルプログラム

<?php

// 文字列を分割
$arrayList = explode("/","A/B/C/D/E",2);

// 結果を出力
print_r($arrayList);

?>

実行結果:

Array
(
    [0] => A
    [1] => B/C/D/E
)

第三引数の最大要素数を2で指定したため、返り値の配列が「A」とそれ以降の「B/C/D/E」に分かれていることがわかりますね。このように、最大要素数を指定することで文字列の分割数を指定することができます。

その3 explode関数の発展的な使い方

ここではexplode関数の発展的な使い方について見ていきましょう。

改行データの分割

テキストファイルなどから読み込んだ改行コードが入っている文字列を、配列に変換したい場合があるとします。たとえば、以下のようなデータを配列に変換したい場合はどうすればよいでしょうか?

メロン
スイカ
みかん
りんご

1行1データとして、配列に変換したい場合は、以下のように区切り文字に改行コードを指定します。

サンプルプログラム

<?php

// 改行コードを指定して分割
$arrayLine = explode ("n","メロンnスイカnみかんnりんご");

// 改行コードがいくつかのパターンがあるため次のような
// 形もあります
// $arrayLine = explode ("r","2019/01/31");
// $arrayLine = explode ("nn","2019/01/31");

// 結果を出力
print_r($arrayLine);

?>

実行結果:

Array
(
    [0] => メロン
    [1] => スイカ
    [2] => みかん
    [3] => りんご
)

CSVデータを取得

先程の改行コードの例を用いて、次は取得したCSVデータを配列に変換してみましょう。

CSVデータ

メロン,スイカ,バナナ
人参,じゃがいも,キャベツ
白玉,あずき,もも

サンプルプログラム

<?php

// CSVデータ
$data = "メロン,スイカ,バナナn人参,じゃがいも,キャベツn白玉,あずき,もも";

// 改行コードで分割
$arrayLine = explode ("n", $data);

// 配列を定義
$output = [];

// 分割されたデータを要素数分繰り返し取得
for($i = 0; $i < count($arrayLine); $i++)
{
    // カンマ(,)で分割する
    $output[] = explode(",", $arrayLine[$i]);
}

// 結果を出力
print_r($output);

?>

実行結果:

Array
(
    [0] => Array
        (
            [0] => メロン
            [1] => スイカ
            [2] => バナナ
        )

    [1] => Array
        (
            [0] => 人参
            [1] => じゃがいも
            [2] => キャベツ
        )

    [2] => Array
        (
            [0] => 白玉
            [1] => あずき
            [2] => もも
        )

)

このようにCSVのデータも配列に変換することができましたね。CSVファイルを実際に読み込んで処理を行いたい場合は以下の記事もぜひ参考にしてください。

【PHP入門】テキスト、CSVファイルを読み込む方法をマスターしよう!
更新日 : 2018年12月18日

explode関数以外の文字列分割方法

preg_split関数

preg_split関数は区切り文字列に正規表現を指定して文字列を分割することができます。

たとえば「AAA , BBB , CCC」から「AAA」のみを取得したい場合、以下のように記述します。

サンプルプログラム

<?php

// 文字列を分割
$arrPregSplit = preg_split("/[,]/","AAA,BBB,CCC");

// preg_splitの結果を出力して値を確認
var_dump($arrPregSplit);

?>

実行結果:

array(3) {
  [0]=>
  string(3) "AAA"
  [1]=>
  string(3) "BBB"
  [2]=>
  string(3) "CCC"
}

preg_split関数については以下の記事でも詳しく解説しています。

str_split

str_split関数は文字列を1文字ずつ分割したり、指定した文字数で分割することができます。

以下の例では文字列を1文字ずつ分割しています。

サンプルプログラム

<?php

// 文字列
$str = 'samurai';

// 文字列を1文字ずつ分割
$array = str_split($str);

//結果を出力
var_dump($array);

?>

実行結果:

array(7) {
  [0]=>
  string(1) "s"
  [1]=>
  string(1) "a"
  [2]=>
  string(1) "m"
  [3]=>
  string(1) "u"
  [4]=>
  string(1) "r"
  [5]=>
  string(1) "a"
  [6]=>
  string(1) "i"
}

str_split関数については、以下の記事でも詳しく解説していますので合わせて参考にしてください。

PHPについてもっと学びたい方へ

ここでは、PHPで文字列を分割するexplode関数について、初心者でも無理なく進められるように解説してきました。プログラミングを身につけるためには、たくさんのトライ・アンド・エラーが必要です。しかし、PHPはできることがたくさんある分、非常に奥の深い言語です。

PHPの使い方についてもっとよく知りたい
PHPのスキルを身に着けられるか不安・・・
PHPを体系的に勉強したい

と感じている方は以下の記事も合わせてご覧ください。

PHPの概要から基本的な使い方まで網羅していますので、きっと参考になるのではと思います。

PHP入門完全攻略ガイド【基礎学習/アプリ開発/仕事獲得/技術習得】
更新日 : 2020年5月12日

まとめ

今回は、PHPで文字列を分割するためのexplode関数について、使い方を解説しました。実際の業務でも区切り文字で区切った文字列を保存して、使うケースはよくあります。

explode関数はとてもシンプルで使う機会も多いので、ぜひ使い方については理解しておきましょう。

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

Sanshiro Wakizaka

北海道出身の30歳で、フリーランスエンジニア兼テックライターとして活動中。新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。

Webアプリ、業務アプリ開発において、要件定義 ~ 運用保守まで様々な経験あり。また3歳の娘がいる1児のパパで、日々娘との時間を確保するために仕事を頑張っています!

侍エンジニアでは、【誰でもわかるレベルのわかりやすさ】を意識して、記事を執筆中。

おすすめコンテンツ

まずはここから!初心者でも1から学べるプログラミング入門カリキュラム

転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー