PHP – explode関数で文字列を分割

php-explode関数

PHPの組み込み関数であるexplodeを使用して、「,」や「/」などで区切られた文字列を分割する方法について解説します。

explode関数とは?

explode関数はPHPであらかじめ用意されている組み込み関数で、”文字列を特定の文字列によって分割”することができます。これを使うと、CSVから「,」区切りデータを読み込んで配列にする時などに役立ちます。

引数の指定は以下のようにします。

explode(区切り文字, 文字列, 最大要素数)

  • 第1引数[delimiter]:「,」や「/」などの区切り文字
  • 第2引数[string]:分割したい文字列
  • 第3引数[limit]:最大要素数を指定します ※任意のため省略可

explode関数の使用例

実際にexplode関数を使用した簡単なサンプルコードを紹介します。

以下の例では、$jobに「,」区切りの文字列データが格納されているので、explodeの第1引数で「,」と指定します。第2引数は分割したいデータを指定すればよいので文字列が格納されている$jobを呼び込んでいます。最後に、配列の中身を表示することができる「print_r」関数を利用して$arrayの中身を確認しています。

$job = '剣士,騎士,魔導師';
$array = explode(',', $job);
print_r($array);
//結果:Array ( [0] => 剣士 [1] => 騎士 [2] => 魔導師 )

第3引数を指定

第3引数の最大要素数を指定した場合は、正の値か負の値かで挙動が異なります。
「正の値」では、指定した要素数に到達後は分割されずに最後のインデックス番号にまとめて格納されます。
「負の値」では、分割した要素が指定した数だけ減った状態で格納されます。

$job = '剣士,騎士,魔導師';

//正の値
print_r(explode(',', $job, 2));
//結果:Array ( [0] => 剣士 [1] => 騎士,魔導師 ) 

//負の値
print_r(explode(',', $job, -1));
//結果:Array ( [0] => 剣士 [1] => 騎士 )