文字列を文字列により分割する

# explode

(PHP 4, PHP 5, PHP 7, PHP 8)

explode — 文字列を文字列により分割する

### 説明

function explode(string `$separator`, string `$string`, int `$limit` = `PHP_INT_MAX`): array

文字列の配列を返します。この配列の各要素は、 `string` を文字列 `separator` で区切った部分文字列となります。

### パラメータ

`separator`

  区切り文字列。

`string`

  入力文字列。

`limit`

  `limit` に正の値が指定された場合、返される配列には 最大 `limit` の要素が含まれ、その最後の要素には `string` の残りの部分が全て含まれます。

  もし `limit` パラメータが負の場合、 最後の -`limit` 個の要素を除く全ての構成要素が返されます。

  `limit` パラメータがゼロの場合は、1 を指定したものとみなされます。

> 注意:

> PHP 8.0 より前のバージョンでは、implode() はいずれのパラメータ順も受け入れることができていましたが、 explode() はそのようなことはサポートしていません。 つまり、`string` 引数の前に必ず `separator` 引数がくることを確認しなければいけません。

### 戻り値

`string` の内容を `separator` で分割した文字列の配列を返します。

空の文字列 ("") が `separator` として使用された場合、 explode() は ValueError をスローします。 `separator` に引数 `string` に含まれていない値が含まれている場合は、 `limit` が負の値なら空の配列、そうでなければ 引数 `string` を含む配列を返します。 `separator` の値が `string` の最初か最後に現れた場合、その位置に応じて、 返される配列の最初か最後に空の配列が追加されます。

### 変更履歴

バージョン | 説明
--- | ---
8.0.0 | 引数 `separator` に空文字列 ("") を渡した場合、 ValueError をスローするようになりました。 それより前のバージョンでは、 explode() は `false` を返していました。

### 例

例1 explode() の例

    <?php
    // 例 1
    $pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
    $pieces = explode(" ", $pizza);
    echo $pieces[0], PHP_EOL; // piece1
    echo $pieces[1], PHP_EOL; // piece2

    // 例 2
    $data = "foo:*:1023:1000::/home/foo:/bin/sh";
    list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
    echo $user, PHP_EOL; // foo
    echo $pass, PHP_EOL; // *
    ?>

例2 explode() の戻り値の例

    <?php
    /*
       デリミタを含まない文字列の場合は、
       単に元の文字列だけを含む一要素の配列を返します
    */
    $input1 = "hello";
    $input2 = "hello,there";
    $input3 = ',';
    var_dump( explode( ',', $input1 ) );
    var_dump( explode( ',', $input2 ) );
    var_dump( explode( ',', $input3 ) );

    ?>

上の例の出力は以下となります。

    array(1)
    (
        [0] => string(5) "hello"
    )
    array(2)
    (
        [0] => string(5) "hello"
        [1] => string(5) "there"
    )
    array(2)
    (
        [0] => string(0) ""
        [1] => string(0) ""
    )

例3 `limit` パラメータの例

    <?php
    $str = 'one|two|three|four';

    // 正の値を持つ limit
    print_r(explode('|', $str, 2));

    // 負の値を持つ limit
    print_r(explode('|', $str, -1));
    ?>

上の例の出力は以下となります。

    Array
    (
        [0] => one
        [1] => two|three|four
    )
    Array
    (
        [0] => one
        [1] => two
        [2] => three
    )

### 注意

> 注意: この関数はバイナリデータに対応しています。

### 参考

- preg_split() - 正規表現で文字列を分割する
- str_split() - 文字列を配列に変換する
- mb_split() - マルチバイト文字列を正規表現により分割する
- str_word_count() - 文字列に使用されている単語についての情報を返す
- strtok() - 文字列をトークンに分割する
- implode() - 配列要素を文字列により連結する

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open