【PHP】explode()の使い方と実装例。廃止されたsplit()との違いも紹介

PHPで文字列を特定の区切り文字で分割したい場面は、開発中に頻繁に出てきます。
例えば、CSVデータをカンマで分割したり、日付の「2025-06-01」を「-」で年・月・日に分けたりといった処理です。
こうした文字列の分割処理で使うのがexplode()関数ですが、古いコードではsplit()関数が使われているケースもあり、注意が必要です。
この記事では、PHPのexplode()関数の使い方を基本から丁寧に解説するとともに、旧関数split()との違いや移行時の注意点についても紹介していきます。
split()関数は廃止されている
まず最も重要なポイントとして、split()関数はPHP 5.3.0で非推奨となり、PHP 7.0.0で完全に削除されています。
古いPHPバージョンで動いていたコードをそのまま新しい環境に移行すると、以下のようなエラーが発生します。
PHP Fatal error: Uncaught Error: Call to undefined function split()
PHP 5.3系の環境では、非推奨の警告として以下のメッセージが表示されていました。
PHP Deprecated: Function split() is deprecated
php.iniのエラーレベルを変更してエラーを非表示にする方法もありますが、根本的な解決にはなりません。
split()関数はPHP 7以降では使用できないため、explode()またはpreg_split()に書き換えるのが正しい対処法です。
explode()関数の基本的な使い方
split()の代わりに使うべき関数が、explode()関数です。
指定した区切り文字で文字列を分割し、配列として返してくれます。
基本的な使い方は、このようになります。
<?php
$date = "2025-06-01";
$parts = explode("-", $date);
print_r($parts);
?>
出力結果はこちらです。
Array
(
[0] => 2025
[1] => 06
[2] => 01
)
explode()関数はPHPの組み込み関数なので、特別なライブラリを追加する必要もなく、手軽に利用できます。
詳細は公式マニュアル(PHP: explode – Manual)も確認すると安心です。
explode()の詳しい使い方
こちらのセクションでは、explode()関数の詳しい使い方を説明していきます。
まず、使用できる引数はこちらです。
第1引数:区切り文字(デリミタ)
第2引数:分割したい文字列
第3引数:分割数の上限(省略可)
それでは、実際にコードを書きながら説明します。
カンマ区切りの文字列を分割する
CSVデータのようなカンマ区切りの文字列を配列に変換する場合です。
<?php
$csv = "りんご,バナナ,みかん,ぶどう";
$fruits = explode(",", $csv);
print_r($fruits);
// 出力:Array ( [0] => りんご [1] => バナナ [2] => みかん [3] => ぶどう )
?>
分割数を制限する(第3引数)
第3引数に数値を指定すると、分割する最大数を制限できます。
<?php
$text = "PHP-JavaScript-Python-Ruby";
$parts = explode("-", $text, 3);
print_r($parts);
// 出力:Array ( [0] => PHP [1] => JavaScript [2] => Python-Ruby )
?>
第3引数に3を指定したため、3つ目の要素には残りの文字列がそのまま格納されます。
先頭の一部だけを取り出したい場合に便利です。
空文字で分割した場合
区切り文字に空文字("")を指定すると、explode()はfalseを返し、警告が発生します。
<?php
$result = explode("", "テスト");
// Warning: explode(): Empty delimiter
?>
区切り文字には必ず1文字以上の文字列を指定しましょう。
explode()のよくある実装例
実際によくある場面を想定し、いくつかの実装例を紹介します。
URLのパスを分割する
<?php
$url = "https://example.com/blog/php/explode";
$path = parse_url($url, PHP_URL_PATH);
$segments = explode("/", trim($path, "/"));
print_r($segments);
// 出力:Array ( [0] => blog [1] => php [2] => explode )
?>
名前をスペースで姓と名に分ける
<?php
$name = "山田 太郎";
list($lastName, $firstName) = explode(" ", $name);
echo "姓:" . $lastName; // 出力:姓:山田
echo "名:" . $firstName; // 出力:名:太郎
?>
implode()と組み合わせて文字列を加工する
explode()で分割した配列を加工し、implode()で再び結合するパターンもよく使われます。
<?php
$tags = "PHP, JavaScript, Python";
$tagArray = explode(", ", $tags);
// 配列を加工(例:小文字に変換)
$tagArray = array_map('strtolower', $tagArray);
echo implode(" | ", $tagArray);
// 出力:php | javascript | python
?>
split()からexplode()への移行方法
古いコードでsplit()を使っている場合の移行方法を整理しておきます。
split()とexplode()の違い
| split()(廃止済み) | explode() | |
|---|---|---|
| 区切り文字 | 正規表現で指定 | 固定文字列で指定 |
| 処理速度 | 遅い(正規表現を解析するため) | 速い |
| 対応状況 | PHP 7.0で削除済み | 現行バージョンで利用可能 |
単純な区切り文字の場合 → explode()に置き換え
正規表現を使わず、固定の区切り文字だけで分割していた場合は、そのままexplode()に置き換えるだけでOKです。
<?php
// 変更前(split)
// $parts = split("-", "2025-06-01");
// 変更後(explode)
$parts = explode("-", "2025-06-01");
?>
正規表現を使っていた場合 → preg_split()に置き換え
split()で正規表現を使っていた場合は、explode()では対応できません。
代わりにpreg_split()関数を使いましょう。
<?php
// 変更前(split)
// $parts = split("[,;]", "りんご,バナナ;みかん");
// 変更後(preg_split)
$parts = preg_split("/[,;]/", "りんご,バナナ;みかん");
print_r($parts);
// 出力:Array ( [0] => りんご [1] => バナナ [2] => みかん )
?>
preg_split()は正規表現パターンをデリミタ(/など)で囲む必要があります。
split()から移行する際は、パターンの前後に/を追加するのを忘れないようにしましょう。
まとめ
今回は、PHPのexplode()関数の使い方と、旧関数split()からの移行方法を紹介しました。
split()関数はPHP 7.0で完全に削除されているため、使用は不可- 固定の区切り文字で分割するなら
explode()関数を使う - 正規表現で分割が必要な場合は
preg_split()関数を使う explode()は正規表現を解析しない分、split()よりも処理速度が速い
古いPHPコードを保守・移行する際は、split()が使われていないか必ず確認し、explode()またはpreg_split()に書き換えましょう。






















