【PHP】explode()とは?文字列を配列に分割する方法を初心者向けに解説

はじめに

PHPでは、文字列を柔軟に操作できる関数が数多く用意されています。
その中でも、文字列を区切り文字によって分割し、配列へ変換するための関数が**explode()**です。

たとえば、ユーザーが入力したテキストを複数の単語に分けたい場合や、カンマ区切りのデータ(CSVなど)を扱いたい場合に役立ちます。
初心者の皆さんにとっては、文字列と配列の仕組みを学ぶ良い機会になるかもしれません。

そこで今回は、explode()の基本的な使い方や、実務的な活用シーンを中心に解説します。
分割のルールや活用パターンを理解すると、文字列から欲しい情報を簡単に取得できるようになるでしょう。

この記事を読むとわかること

  • explode()の基本的な使い方
  • 第三引数(最大要素数)の活用方法
  • 文字列操作の典型的な実務シーン
  • implode()をはじめとした関連機能との違い
  • トラブルを避けるための注意点

explode()とは

explode()は、指定した区切り文字で文字列を分割し、その結果を配列として返してくれる関数です。
具体的には、次のような形式で利用します。

explode($delimiter, $string, $limit)
  • $delimiter:区切り文字
  • $string:分割対象の文字列
  • $limit:返される要素数の最大値(省略可能)

この関数は、第一引数に文字列を渡すことで、その文字が出現するたびに切り分けを行います。
もし区切り文字が見つからなかった場合は、分割されずに文字列全体が配列の要素として返ってきます。

たとえば、"apple,banana,cherry" という文字列をカンマで分割したいときは、区切り文字にカンマ ("," ) を指定すればOKです。
結果として、"apple"、"banana"、"cherry" という3つの要素を持つ配列が得られます。

explode()の基本的な使い方

ここでは、最もシンプルな使い方として、第一引数と第二引数のみを使った例を紹介します。

<?php
$fruits = "apple,banana,cherry";
$result = explode(",", $fruits);

print_r($result);
// 出力例:
// Array
// (
//     [0] => apple
//     [1] => banana
//     [2] => cherry
// )

区切り文字としてカンマを指定し、文字列を分割しています。
このように、区切り文字が含まれるたびに要素を切り分け、配列が生成されます。

ただし、文字列のなかに区切り文字が含まれていない場合は、1要素のみの配列が返る点に気をつけましょう。
たとえば "apple banana cherry" のようにカンマが入っていなければ、配列要素数は1つだけとなります。

また、区切り文字として空文字 "" を設定しても、有効な分割は行われません。
誤って空文字を入れると意図しない結果になるため、どの文字で分割するかは必ず明示的に指定した方が良いでしょう。

explode()の第三引数を活用する

explode()には第三引数として**$limit**を指定でき、配列要素の最大数をコントロールできます。
これを使うことで、分割しすぎを防いだり、特定の部分はまとめて確保したりすることが可能です。

$limitを正の値で使う場合

もし $limit を正の値で指定すると、要素数は最大でその数だけに制限されます。
たとえば、次の例を見てみましょう。

<?php
$text = "red,green,blue,yellow";
$result = explode(",", $text, 3);

print_r($result);
// 出力例:
// Array
// (
//     [0] => red
//     [1] => green
//     [2] => blue,yellow
// )

この場合、第三引数に3を指定しているため、最初の2個は区切り文字に従って分割されます。
ただし、3つ目の要素には残りの文字列がすべて入るので、"blue,yellow" というひとつの要素として扱われます。

区切りが多すぎると困る場面や、残りのデータをまとめて1つの要素にしたいときに便利です。
フォーム入力やクエリパラメータの処理などで部分的にデータをまとめておきたい場合にもよく使われます。

$limitを負の値で使う場合

負の値を指定すると、末尾から指定数分だけ要素を除外する動きになります。
以下は簡単な例です。

<?php
$text = "one,two,three,four,five";
$result = explode(",", $text, -1);

print_r($result);
// 出力例:
// Array
// (
//     [0] => one
//     [1] => two
//     [2] => three
//     [3] => four
// )

-1を指定すると、最後の要素 "five" が除かれることがわかります。
扱い方を間違えると必要な要素が削除される場合があるため、初心者の皆さんはまず正の値による使い方を優先的に覚えるのがおすすめです。

実務での活用シーン

explode()は、ちょっとした文字列の処理から業務系システムのデータ変換まで、幅広く使われています。
ここからは、実際にどういったシチュエーションで役立つかを見ていきましょう。

ユーザー入力の分割

たとえば、ユーザーが複数のタグをカンマ区切りで入力し、そのタグを配列として保持したいケースが考えられます。
ブログ投稿や問い合わせフォームなどで、複数のキーワードを一度に受け取りたい場合に便利です。

下記のようにフォームから受け取った文字列をexplode()で分割すると、配列として各タグを扱えるようになります。
その後、データベースに保存したり、別の処理に渡すことが容易になるでしょう。

<?php
$userInput = "PHP,HTML,CSS,JavaScript";
$tags = explode(",", $userInput);
// 各タグをループ処理で一括登録するなど

ユーザー入力に意図しない文字や余分な空白が含まれる可能性があります。
explode()の前にtrim()や正規表現によるフィルタリングを組み合わせることも検討してください。

CSVデータの取り扱い

カンマ区切りといえば、CSVファイルの読み取りを思い浮かべる方も多いかもしれません。
もちろんPHPにはfgetcsv()などの便利な関数も存在しますが、ちょっとしたCSV形式の文字列を扱う場合にはexplode()を利用するのも手軽です。

たとえば、次のようなCSVの一行を取得したら、それをexplode()で分割し、データを各カラムに振り分けることができます。

<?php
$csvLine = "John,Doe,30,Engineer";
$data = explode(",", $csvLine);

// $data[0] => "John"
// $data[1] => "Doe"
// $data[2] => "30"
// $data[3] => "Engineer"

大規模なCSVを扱うときは専用の関数や手法を使ったほうが安全ですが、単純な分割で済むような処理ならexplode()が手軽でしょう。

explode()と関連する機能

文字列を分割して配列を作るという用途は、PHPの他の関数や手法でも実現できます。
ここでは、しばしば混同されがちな機能と比べてみます。

implode()との違い

implode()は、配列の要素を区切り文字で連結して1つの文字列に変換する関数です。
explode()とは真逆の動きをするイメージで、ペアで覚えると理解が早いでしょう。

簡単な例を挙げると、先ほどの $tags 配列を再度文字列に戻したい場合、下記のように書けます。

<?php
$tags = ["PHP", "HTML", "CSS", "JavaScript"];
$joined = implode(",", $tags);

// $joined => "PHP,HTML,CSS,JavaScript"

explode()とimplode()を組み合わせることで、文字列と配列を行き来できるのがPHPの利点です。

preg_split()との使い分け

正規表現で文字列を分割したい場合は、preg_split()が候補となります。
一方で、explode()は単純な文字ベースの区切りのみを扱うので、パターンマッチングが不要なときにはexplode()のほうがわかりやすいでしょう。

もし "スペースまたはカンマ" のように複数パターンの区切りを想定するならば、preg_split()を使った正規表現による分割も検討します。
しかし、初心者の皆さんが最初に学ぶには、explode()で十分なケースが多いはずです。

簡易的な比較表

関数特徴
explode()単一の区切り文字で簡潔に分割できる
preg_split()正規表現を用いた柔軟な分割が可能
implode()配列の要素を区切り文字で連結し文字列に変換する

よくあるトラブルシューティング

explode()を使い始めると、分割結果が想定と違うケースに遭遇することがあります。
特によくあるのが、区切り文字を含まない文字列を分割しているつもりが、結果が配列1要素になってしまう問題です。

それから、区切り文字前後に余分な空白が入っていると、配列の先頭や末尾に意図しないスペースが残ることがあります。
もし文字列中に改行コードやタブ文字が含まれるなら、その挙動もチェックが必要です。

分割前の文字列にtrim()やstr_replace()で不要な空白や改行を除去するクセをつけると、予期せぬトラブルを防ぎやすくなります。

また、第三引数の使い方を間違えると、要素が余計に削除される場合があるので注意が必要です。
負の値や大きすぎる正の値を設定した場合、取りこぼしがないかよく確認してから使いましょう。

まとめ

explode()は、文字列を指定した文字で分割して配列にする、とても便利な関数です。
区切り文字と第三引数を正しく扱えば、複雑な文字列処理にも柔軟に対応できます。

実務の現場でも、ユーザー入力やCSVデータなど、複数の要素を一度に扱うケースは意外と多いものです。
そんなとき、explode()を使いこなすことでデータをきれいに整理し、後続の処理を簡潔にすることができるでしょう。

逆に、配列を1つの文字列にまとめたいときはimplode()を利用し、正規表現による分割が必要ならpreg_split()と使い分けるのがおすすめです。
まずは身近な事例でexplode()を試しながら、文字列操作の基本と応用をしっかり押さえていきましょう。

PHPをマスターしよう

この記事で学んだPHPの知識をさらに伸ばしませんか?
Udemyには、現場ですぐ使えるスキルを身につけられる実践的な講座が揃っています。