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
)
(
[0] => apple
[1] => banana
[2] => grape
[3] => cherry
[4] => strawberry
)
法則が決まっている文字列の場合は、文字毎の分割としても使えます。
下記の例は、日付を年月日で配列に分けて出力しています。
サンプルコード
$date = '2024-09-12'; $aryHoge = explode('-', $date); echo '今日は'.$aryHoge[0].'年'.$aryHoge[1].'月'.$aryHoge[2].'日です。';
今日は2024年09月12日です。
第三引数の数値設定オプションで、何件目以降は配列化をキャンセル可能
第三引数は、指定した件数以降は配列変換を行わない、という設定が可能です。
サンプルコード
$aryFruits = 'apple、banana、grape、cherry、strawberry'; $aryHoge = explode('、', $aryFruits, 3); print_r($aryHoge);
Array
(
[0] => apple
[1] => banana
[2] => grape、cherry、strawberry
)
(
[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
)
(
[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
)
(
[0] => apple
banana
grape
cherry
strawberry
)
逆の処理(配列を文字列化)のimplode
explode関数の真逆の処理に、配列を区切り文字で繋げて文字列に変換するimplode関数もあります。
相互関数として覚えておくと便利です。
サンプルコード
$aryHoge = ['apple', 'banana', 'grape', 'cherry', 'strawberry']; //配列を「@」で結合 $fruits = implode('@', $aryHoge); echo $fruits;
apple@banana@grape@cherry@strawberry
explodeは汎用性が高く、数あるPHPの関数の中でもかなり使用する機会が多いと思います。
しっかり身に着けて開発に役立てていきましょう。
以上、PHPのexplodeで文字列を配列に変換する方法、でした。
ディスカッション
コメント一覧
まだ、コメントがありません