言語バージョン 8.0.1

公開日 January 11, 2021, GMT+9

更新日 January 13, 2021, GMT+9

explode

このページでは豊富な例を用いてPHPのexplode関数の使い方を学ぶことができます。

explode関数は「文字列(string)」を「特定の文字列」で分割し、「文字列を要素とした配列(Array)」を戻り値として返す関数です。

第1引数には「区切り文字列」を、第2引数には「分割される文字列」を指定します。
第3引数の指定は任意ですが、指定することで戻り値の配列の要素の数を制限することができます。

注意点
公式ページには「区切り文字」が""(空文字)の場合の戻り値がfalseになる、との記述がありますが、 その場合、コード例を実行する環境ではエラーが発生しました。(2021年1月11日時点)
このページではコード例を実行した環境での出力を掲載していますのでご注意ください。

// 定義
explode ( string $separator , string $string , int $limit = PHP_INT_MAX ) : array

出典:explode - PHPマニュアル

TL;DR

基本

// 第1引数に「区切り文字列」、第2引数に「分割される文字列」を指定します
$string1 = 'php,javascript,python';
$exploded_array1 = explode(',', $string1);
// 戻り値は文字列型(string型)の要素を持つ配列
var_dump($exploded_array1);
------------------------------
array(3) {
  [0]=>
  string(3) "php"
  [1]=>
  string(10) "javascript"
  [2]=>
  string(6) "python"
}
------------------------------

// 分割される文字列に変更はありません
print_r($string1);
==> php,javascript,python




// 区切り文字列を' '(半角スペース)に変更
$string2 = 'apple banana kiwi';
$exploded_array2 = explode(' ', $string2);
print_r($exploded_array2);
------------------------------
Array
(
    [0] => apple
    [1] => banana
    [2] => kiwi
)
------------------------------



// 「区切り文字列」が「分割される文字列」に含まれていない場合
$string3 = 'I like PHP!';
$exploded_array3 = explode('separator', $string3);
print_r($exploded_array3);
------------------------------
Array
(
    [0] => I like PHP!
)
------------------------------



// 「分割される文字列」が空文字の場合
$exploded_array4 = explode(',', '');
var_dump($exploded_array4);
------------------------------
array(1) {
  [0]=>
  string(0) ""
}
------------------------------



// 「区切り文字列」が空文字の場合
$exploded_array5 = explode('', 'I love PHP.');
==> Fatal error: Uncaught ValueError: explode(): Argument #1 ($separator) cannot be empty in [エラーが起きた箇所]

戻り値の配列の要素数の制限

// 第3引数を指定しない場合
$string1 = 'apple,banana,kiwi';
$exploded_array1 = explode(',', $string1);
print_r($exploded_array1);
------------------------------
Array
(
    [0] => apple
    [1] => banana
    [2] => kiwi
)
------------------------------



// 第3引数を指定して「戻り値の配列の要素の数」を制限します
$string1 = 'apple,banana,kiwi';
$exploded_array2 = explode(',', $string1, 2);
print_r($exploded_array2);
------------------------------
Array
(
    [0] => apple
    [1] => banana,kiwi
)
------------------------------



// 第3引数が0の場合
$string1 = 'apple,banana,kiwi';
$exploded_array3 = explode(',', $string1, 0);
print_r($exploded_array3);
------------------------------
Array
(
    [0] => apple,banana,kiwi
)
------------------------------



// 第3引数が負の場合
$string1 = 'apple,banana,kiwi';
$exploded_array4 = explode(',', $string1, -1);
print_r($exploded_array4);
------------------------------
Array
(
    [0] => apple
    [1] => banana
)
------------------------------

解説

// 定義
explode ( string $separator , string $string , int $limit = PHP_INT_MAX ) : array

出典:explode - PHPマニュアル

基本

explode関数は「文字列(string)」を「特定の文字列」で分割します。
戻り値は「分割された文字列を要素とした配列(Array)」であり、区切り文字列自体は戻り値の配列に含まれません。

第1引数には「区切り文字列」、第2引数には「分割される文字列」を指定します。

第2引数に指定した「分割される文字列」自体には変更を行いません。

$string1 = '1__2__3';
$separator1 = '__';
$exploded_array1 = explode($separator1, $string1);
var_dump($exploded_array1);
------------------------------
array(3) {
  [0]=>
  string(1) "1"
  [1]=>
  string(1) "2"
  [2]=>
  string(1) "3"
}
------------------------------

// 分割される文字列に変更はありません
print_r($string1);
==> 1__2__3




// 「区切り文字列」が「分割される文字列」に含まれていない場合
$string2 = '1__2__3';
$exploded_array2 = explode(',', $string2);
print_r($exploded_array2);
------------------------------
Array
(
    [0] => 1__2__3
)
------------------------------



// 「分割される文字列」が空文字の場合
$exploded_array3 = explode(',', '');
var_dump($exploded_array3);
------------------------------
array(1) {
  [0]=>
  string(0) ""
}
------------------------------



// 「区切り文字列」が空文字の場合
$exploded_array4 = explode('', 'I like PHP.');
==> PHP Fatal error:  Uncaught ValueError: explode(): Argument #1 ($separator) cannot be empty in [エラーが起きた箇所]

戻り値の配列の要素数の制限

第3引数は任意指定の引数で、整数(int)を指定します。
指定することで戻り値の配列の要素数を制限することができます。

第3引数が正の場合、戻り値の最後の要素以外は通常どおり分割された文字列が、 最後の要素には分割されていない余りの文字列が入ります。
第3引数が負の場合、「通常通り分割された場合の戻り値」の最後から-第3引数個の要素を除いた配列が返ります。
第3引数が0の場合、1を指定した場合と同様に解釈され、要素数が1つの配列が戻り値となります。

// 第3引数を指定しない場合
$string1 = 'php javascript python';
$exploded_array1 = explode(' ', $string1);
print_r($exploded_array1);
------------------------------
Array
(
    [0] => php
    [1] => javascript
    [2] => python
)
------------------------------



// 第3引数を指定する場合
$string1 = 'php javascript python';
$exploded_array2 = explode(' ', $string1, 2);
print_r($exploded_array2);
------------------------------
Array
(
    [0] => php
    [1] => javascript python
)
------------------------------



// 第3引数が0の場合
$string1 = 'php javascript python';
$exploded_array3 = explode(' ', $string1, 0);
print_r($exploded_array3);
------------------------------
Array
(
    [0] => php javascript python
)
------------------------------



// 第3引数が負の場合
$string1 = 'php javascript python';
$exploded_array4 = explode(' ', $string1, -1);
print_r($exploded_array4);
------------------------------
Array
(
    [0] => php
    [1] => javascript
)
------------------------------

1次情報

explode - PHPマニュアル