【初心者向け】PHPで文字列を分割するexplode関数の使い方

【初心者向け】PHPで文字列を分割するexplode関数の使い方

PHPで「CSVを取り込んだ文字列をカンマで分割したい」と思ったことは誰でもあると思います。そこで便利なのがexplode関数です。この関数を使えば1行で文字列の分割を行うことができます。

この記事では以下のことを紹介します。

  • explode関数の概要と使用方法
  • explode関数以外の関数を用いての文字列の分割
  • explode関数を使用したサンプルコード
目次
  1. 【初心者向け】PHPで文字列を分割するexplode関数の使い方
  2. PHPの文字列を分解するとは何か?
  3. PHPの文字列を分割する際の関数explodeとは?
  4. 書式
  5. 返り値
  6. サンプルコード
  7. PHPの文字列を分割する関数は複数ある
  8. その他関数1:preg_split関数
  9. その他関数2:str_split関数
  10. explode関数を使った実際のコード
  11. 区切り文字","(カンマ)で分割
  12. 区切り文字","(スペース)で分割
  13. 第三引数の最大の要素を指定する
  14. まとめ
  15. 参考文献

【初心者向け】PHPで文字列を分割するexplode関数の使い方

PHPの文字列を分解するとは何か?

images

例えば "青森、山形、秋田、岩手" という読点「、」で区切られた都道府県の文字列があります。この状態では、都道府県としては使いづらいので「配列」として分割して活用することができます。配列にするとキーで取り出せたり、foreachで処理したりと格段に使いやすくなります。

echo $prefectures[0]; // 青森
echo $prefectures[1]; // 山形
echo $prefectures[2]; // 秋田
echo $prefectures[3]; // 岩手

PHPの文字列を分割する際の関数explodeとは?

images explode関数は指定した区切り文字(デリミタ、delemiterと言います)によって、文字列を分割して配列にします。

PHP: explode - Manual

書式

explode(第一引数,第二引数、第三引数)
引数 パラメータ
第一引数 区切り文字(例としてスペースやカンマなど)
第二引数 入力文字
第三引数(任意) 返される配列の最大の要素の数、最後の配列には分割の残りの文字列が全て含まれます。

第三引数については、この時点では理解が難しいかもしれません。後ほどソースコードと出力される内容をご紹介するので、そちらで具体的にみてみましょう。

返り値

入力文字を区切り文字で分割して文字列の配列を返します。

サンプルコード

<?php
// 例
$str = "red,blue,yellow,green";
$colors = explode(",", $str);
print_r($colors);
// Array ( [0] => red [1] => blue [2] => yellow [3] => green )

PHPの文字列を分割する関数は複数ある

PHPの文字列を分割する関数はいくつか種類があります。当記事では、簡単で汎用的に使えるexplode関数のみ詳しく解説します。

その他関数1:preg_split関数

正規表現で文字列を分割します。正規表現を理解する必要があるためサンプルコードのみ記載します。

PHP: preg_split - Manual

<?php
// カンマまたは " ", \r, \t, \n , \f などの空白文字で句を分割します。
$keywords = preg_split("/[\s,]+/", "code camp, KIDS");
print_r($keywords);
// Array ( [0] => code [1] => camp [2] => KIDS )

その他関数2:str_split関数

文字列を指定した文字数ずつ配列に変換します。

PHP: str_split - Manual

<?php
$str = "a welcome guest";
$array = str_split($str, 3);
print_r($array);
// Array ( [0] => a w [1] => elc [2] => ome [3] => gu [4] => est )

explode関数を使った実際のコード

images

ここからはexplode関数を使ったいくつかのサンプルコードを見てみましょう。

区切り文字","(カンマ)で分割

まずは","(カンマ)で区切られている文字列を分割してみます。

<?php
$str = "ハラミ,ホルモン,ロース,カルビ";
// ","(カンマ)で分割
$parts = explode(",", $str);
print_r($parts);

images

区切り文字","(スペース)で分割

次は" "(スペース)で区切られている文字列を分割します。基本的には","(カンマ)で区切られている文字列と同様の方法です。

<?php
$str = "巨人 阪神 広島 横浜";
// " "(スペース)で分割
$team = explode(" ", $str);
print_r($team);

images

第三引数の最大の要素を指定する

最後に、第三引数を設定して実行してみましょう。このソースコードでは、要素数が3つの配列ができます。

<?php
$str = "ハラミ,ホルモン,ロース,カルビ,タン";
// ","(カンマ)で分割
// 最大の要素数を3とする
$parts = explode(",", $str, 3);
print_r($parts);

images

まとめ

images

explode関数はCSVやURLの文字列の分割などで頻繁に利用します。そのほかにもスペースを区切り文字として姓名で分割するなど色々応用が効くので覚えておきましょう。explode関数に慣れたら、他の関数でも文字列の分割をぜひ試してみてください。それぞれの関数の特徴やメリットがよくわかると思います。

参考文献

「PHP逆引きレシピ 第二版」鈴木憲治、山田 直明、山本義之、浅野仁、櫻井 雄大、安藤建一、著、翔泳社、2013

「PHP: explode - Manual」 http://php.net/manual/ja/function.explode.php

「PHP: preg_split - Manual」 http://php.net/manual/ja/function.preg-split.php

「PHP: str_split - Manual」 http://php.net/manual/ja/function.str-split.php

山川竜太郎
ライター
山川竜太郎

関連記事