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

プログラミング初心者向けにPHPのexplode関数で文字列を文字または文字列で分割し、配列にして返す方法について解説しています。理解する上で役立つ事例も6つ紹介しているので、ぜひ自分でも書いてみて実際に使えるようになりましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

PHPで書くexplode関数の使い方について解説しています。

文字列を文字で分割し配列にして返すという方法ですが、実際にサンプルを載せているので、参考にしながら理解していきましょう。

そもそもPHPが何か分からない場合は、先にPHPとはの記事をご覧ください。

 

なお本記事は、TechAcademyのPHPオンライン講座の内容をもとにしています。

 

explode関数とは

explode関数とは、文字列を指定した文字列で分割する関数です。

たとえば、
“花子、太郎、和夫、隼人”
のような文字列データがあったとします。

この場合、文字列 “、”で分割すると、4名の名前に分割することになります。

"花子"、"太郎"、"和夫"、"隼人"

分割された文字列は、戻り値として返される配列の各要素として格納されます。

配列[0]= ”花子”
配列[1]= ”太郎”
配列[2]= ”和夫”
配列[3]= ”隼人”

 

大石ゆかり

田島メンター!文字列を文字で分割して配列にしてくれるのは便利だと思うんですが、どういう意味があるのでしょうか?

田島悠介

分割して配列にするとデータとして使えるよね。例えばこのページのURLは、magazine/11415ってなってるよね。スラッシュで分割すると、分類名とデータベースにある記事の番号に分けられるよね。

大石ゆかり

データとして何かに使えそうですね!

田島悠介

そうなんだ。実際にexplode関数を書いてみよう!

 

explode()の書き方

書式

explode(引数1、引数2、引数3)

説明

引数1:区切り文字(separator)
引数2:文字列(string)
引数3:戻り値として返す、配列の最大要素数(delimiter)

戻り値

分割した文字列の配列が返されます。

注意事項

・引数1で指定した文字列に、区切り文字がまったく含まれていなかった場合は、その文字列をそのまま返します。
・引数2の区切り文字が空文字(””)の場合は、実行時にwarningとなりますのでご注意ください。
・引数3の最大要素数が指定された場合は、最後の配列要素に残りの文字列がすべて格納されます。

 

[PR] PHPのプログラミングで挫折しない学習方法を動画で公開中

実際にexplode関数を使ったプログラムを書いてみよう

それでは、実際にexplode関数を使用して、簡単なサンプルプログラムを作成してみましょう。

 

文字列を区切り文字 ” , ” (カンマ)で分割

“Tom,Mike,Wendy,Jane”という名前が記載された文字列を、区切り文字”,”で分割します。

サンプルプログラム1

<?php
  $frends = "Tom,Mike,Wendy,Jane";
  $frend = explode(",",$frends);
  echo '<p>',$frend[0],'</p>';
  echo '<p>',$frend[1],'</p>';
  echo '<p>',$frend[2],'</p>';
  echo '<p>',$frend[3],'</p>';
?>

実行結果

sample1-620x139

 

文字列を区切り文字” ” (スペース)で分割

“baseball tennis soccer volleyball”という名前が記載された文字列を、区切り文字”,”で分割します。

 

サンプルプログラム2

<?php
  $sports = "baseball tennis soccer volleyball";
  $sport = explode(" ",$sports);
  echo '<p>',$sport[0],'</p>';
  echo '<p>',$sport[1],'</p>';
  echo '<p>',$sport[2],'</p>';
  echo '<p>',$sport[3],'</p>';
?>

実行結果

sample2-620x133

 

最大要素数の指定

文字列を区切り文字 ”  ” (スペース)で分割し、最大要素数を2に指定します。

サンプルプログラム3

<?php
  $sports = "baseball tennis soccer volleyball";
  $sport = explode(" ",$sports,2);
  echo '<p>',$sport[0],'</p>';
  echo '<p>',$sport[1],'</p>';
?>

 

実行結果

sample3-620x83

 

文字列を区切り文字 ” ” (空文字)で分割

サンプルプログラム4

<?php
  $frends = "Tom,Mike,Wendy,Jane";
  $frend = explode("",$frends);
  echo '<p>',$frend[0],'</p>';
  echo '<p>',$frend[1],'</p>';
  echo '<p>',$frend[2],'</p>';
  echo '<p>',$frend[3],'</p>';
?>

 

実行結果

下記のように区切り文字が空になっているとのエラーになってしまいますのでご注意ください。
Warning: explode(): Empty delimiter in C:\xampp\htdocs\dashboard\php_sample\php\explode4.php on line 3

 

英文の単語の数をカウント

英語の文章を、区切り文字” “(スペース)で単語に分割し、単語の数を数えてみましょう。

 

サンプルプログラム5

<?php
  $introduction = "Hi! My name is Mike. I am a system engineer. I have been working for my company for 30 years.";
  echo '<p>','次の英文の単語の数を数えてみましょう。','</p>';
  $words = explode(" ",$introduction);
  echo '<p>',$introduction,'</p>';
  echo '<p>','単語の数は ',count($words),' です。','</p>';
?>

 

実行結果

sample6-620x113

 

おわりに

英文の単語の数を数えるプログラムは、explode関数を使えば、2行程度でできてしまうんですね。

まだまだ、いろいろな使い方がありそうです。ぜひ、活用してみてください。

 

大石ゆかり

explode関数は、最初に区切る文字を指定して、後に文字列を指定するんですね。

田島悠介

そうそう。explodeは区切り文字を指定するんだ。

大石ゆかり

count関数も使うと、単語数がわかったりするんですねー。

田島悠介

単純に文字列を区切って配列にするっていう関数だけど、応用例は多かったりするんだよ。

 

PHPを勉強していて、

  • もっと効率的に勉強したい
  • 誰かに聞きながら学びたい
  • 自分でWebサービスを作りたい

と思ったことはないでしょうか。

 

そんな方のために、TechAcademyではオンラインブートキャンプPHP/Laravelコースを提供しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

独学に限界を感じている場合はご検討ください。