- 更新日: 2020年03月19日
- 公開日: 2018年03月13日
【初心者向け】PHPで文字列を分割するexplode関数の使い方
PHPで「CSVを取り込んだ文字列をカンマで分割したい」と思ったことは誰でもあると思います。そこで便利なのがexplode関数です。この関数を使えば1行で文字列の分割を行うことができます。
この記事では以下のことを紹介します。
- explode関数の概要と使用方法
- explode関数以外の関数を用いての文字列の分割
- explode関数を使用したサンプルコード
【初心者向け】PHPで文字列を分割するexplode関数の使い方
PHPの文字列を分解するとは何か?
例えば "青森、山形、秋田、岩手" という読点「、」で区切られた都道府県の文字列があります。この状態では、都道府県としては使いづらいので「配列」として分割して活用することができます。配列にするとキーで取り出せたり、foreachで処理したりと格段に使いやすくなります。
echo $prefectures[0]; // 青森
echo $prefectures[1]; // 山形
echo $prefectures[2]; // 秋田
echo $prefectures[3]; // 岩手
PHPの文字列を分割する際の関数explodeとは?
explode関数は指定した区切り文字(デリミタ、delemiterと言います)によって、文字列を分割して配列にします。
書式
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
// カンマまたは " ", \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 = "a welcome guest";
$array = str_split($str, 3);
print_r($array);
// Array ( [0] => a w [1] => elc [2] => ome [3] => gu [4] => est )
explode関数を使った実際のコード
ここからはexplode関数を使ったいくつかのサンプルコードを見てみましょう。
区切り文字","(カンマ)で分割
まずは","(カンマ)で区切られている文字列を分割してみます。
<?php
$str = "ハラミ,ホルモン,ロース,カルビ";
// ","(カンマ)で分割
$parts = explode(",", $str);
print_r($parts);
区切り文字" "(スペース)で分割
次は" "(スペース)で区切られている文字列を分割します。基本的には","(カンマ)で区切られている文字列と同様の方法です。
<?php
$str = "巨人 阪神 広島 横浜";
// " "(スペース)で分割
$team = explode(" ", $str);
print_r($team);
第三引数の最大の要素を指定する
最後に、第三引数を設定して実行してみましょう。このソースコードでは、要素数が3つの配列ができます。
<?php
$str = "ハラミ,ホルモン,ロース,カルビ,タン";
// ","(カンマ)で分割
// 最大の要素数を3とする
$parts = explode(",", $str, 3);
print_r($parts);
\Webサイト担当者としてのスキルが身に付く/
まとめ
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
- この記事を書いた人
- 山川竜太郎