PHPのexplodeで文字列を配列に変換する方法

PHPで、文字列を特定の単語で区切り、配列に変換できるexplode関数の使い方をまとめました。

explode関数の使い方

区切り文字を指定して、区切り文字毎の配列に変換

explodeは、第一引数に、配列毎に区切りたい単語を設定し、第二引数に指定の文字列を設定します。

explode('区切りたい文字列', '文字列' [,何件で止めるか])
サンプルコード
$fruits = 'apple、banana、grape、cherry、strawberry';

//全角の「、」毎に配列に区切る
$aryHoge = explode('、', $fruits);

print_r($aryHoge);
Array
(
    [0] => apple
    [1] => banana
    [2] => grape
    [3] => cherry
    [4] => strawberry
)

法則が決まっている文字列の場合は、文字毎の分割としても使えます。

下記の例は、日付を年月日で配列に分けて出力しています。

サンプルコード
$date = '2020-08-05';

$aryHoge = explode('-', $date);

echo '今日は'.$aryHoge[0].'年'.$aryHoge[1].'月'.$aryHoge[2].'日です。';
今日は2020年08月05日です。

第三引数の数値設定オプションで、何件目以降は配列化をキャンセル可能

第三引数は、指定した件数以降は配列変換を行わない、という設定が可能です。

サンプルコード
$aryFruits = 'apple、banana、grape、cherry、strawberry';

$aryHoge = explode('、', $aryFruits, 3);

print_r($aryHoge);
Array
(
    [0] => apple
    [1] => banana
    [2] => grape、cherry、strawberry
)

改行やタブ等の特殊文字も変換可能(ただし注意点あり)

改行(\n)やタブ(\t)も、explodeによる変換が可能です。

しかし、改行やタブは特殊文字という扱いで、PHPの仕様により、特殊文字は""(ダブルクオーテーション)で囲わないと適用されません。

知らないと嵌る落とし穴なので注意しておきましょう。

変換できる(ダブルクオート)

サンプルコード
$fruits = 'apple
banana
grape
cherry
strawberry';

$aryHoge = explode("\n", $fruits);

print_r($aryHoge);
Array
(
    [0] => apple
    [1] => banana
    [2] => grape
    [3] => cherry
    [4] => strawberry
)

変換できない(シングルクオート)

サンプルコード
$fruits = 'apple
banana
grape
cherry
strawberry';

$aryHoge = explode('\n', $fruits);

print_r($aryHoge);
Array
(
    [0] => apple
banana
grape
cherry
strawberry
)

逆の処理(配列を文字列化)のimplode

explode関数の真逆の処理に、配列を区切り文字で繋げて文字列に変換するimplode関数もあります。

参考 PHPのimplodeで配列を結合し文字列にする方法

相互関数として覚えておくと便利です。

サンプルコード
$aryHoge = ['apple', 'banana', 'grape', 'cherry', 'strawberry'];

//配列を「@」で結合
$fruits = implode('@', $aryHoge);

echo $fruits;
apple@banana@grape@cherry@strawberry

explodeは汎用性が高く、数あるPHPの関数の中でもかなり使用する機会が多いと思います。

しっかり身に着けて開発に役立てていきましょう。

以上、PHPのexplodeで文字列を配列に変換する方法、でした。

コメント

タイトルとURLをコピーしました