2016/10/18 20:52:36

PHPで「文字列を区切り文字を指定して分割し配列におさめる」explode関数

php-logo
目次(クリックするとジャンプします)
  • 1:文字列の分割
  • 1.1:全角文字で分割
  • 1.2:空白で分割
  • 1.3:改行で分割
  • 1.4:空文字
  • 1.5:指定した区切り文字がなかった場合
  • 2:まとめ

文字列の分割

例えばこんな文字列があったとします。ひと単語ずつ分割して配列に収めたい。

かえる、かめ、うさぎ、たぬき、ぞう、にわとり

そんな時に役立つのがexplode関数です。

全角文字で分割

例文は全角の「、」で分割できそうですね。早速分割してみます。

<?php
$string = "かえる、かめ、うさぎ、たぬき、ぞう、にわとり";
$array  = explode("、", $string);
var_dump($array);

こんな感じで出力されます。

array(6) {
  [0]=>
  string(9) "かえる"
  [1]=>
  string(6) "かめ"
  [2]=>
  string(9) "うさぎ"
  [3]=>
  string(9) "たぬき"
  [4]=>
  string(6) "ぞう"
  [5]=>
  string(12) "にわとり"
}

全角の区切り文字でも問題なく分割してくれます。

空白で分割

区切り文字は空白でも大丈夫です。例文を空白区切りにしてみました。

<?php
$string = "かえる かめ うさぎ たぬき ぞう にわとり";
$array  = explode(" ", $string);
var_dump($array);

分割っ!!

array(6) {
  [0]=>
  string(9) "かえる"
  [1]=>
  string(6) "かめ"
  [2]=>
  string(9) "うさぎ"
  [3]=>
  string(9) "たぬき"
  [4]=>
  string(6) "ぞう"
  [5]=>
  string(12) "にわとり"
}

改行で分割

改行でも分割できマス。例文を改行してみました。改行ではエスケープシーケンスを指定しています。

<?php
$string = "かえる
かめ
うさぎ
たぬき
ぞう
にわとり";
$array  = explode("n", $string);
var_dump($array);

ぶんかつ!!

array(6) {
  [0]=>
  string(9) "かえる"
  [1]=>
  string(6) "かめ"
  [2]=>
  string(9) "うさぎ"
  [3]=>
  string(9) "たぬき"
  [4]=>
  string(6) "ぞう"
  [5]=>
  string(12) "にわとり"
}

空文字

空文字の指定はfalseが返り、失敗します。

<?php
$string = "かえる、かめ、うさぎ、たぬき、ぞう、にわとり";
$array  = explode("", $string);
var_dump($array);

無念!!

PHP Warning:  explode(): Empty delimiter in /home/pecodrive/sandbox/expload.php on line 4
bool(false)

指定した区切り文字がなかった場合

区切り文字がない場合は文字列全体が配列の第一要素に入って返ってきます。

<?php
$string = "かえる、かめ、うさぎ、たぬき、ぞう、にわとり";
$array  = explode("・", $string);
var_dump($array);

こう返ります。

array(1) {
  [0]=>
  string(66) "かえる、かめ、うさぎ、たぬき、ぞう、にわとり"
}

第三引数にマイナスの値を取ると、空配列を返すようになります。何らかの条件分岐などをする場合に、空配列のほうが都合が良いときもありますからね。これは良いオプションです。

<?php
$string = "かえる、かめ、うさぎ、たぬき、ぞう、にわとり";
$array  = explode("・", $string, -1);
var_dump($array);

空!!

array(0) {
}

まとめ

  • 区切り文字を指定して文字列を分割して配列にするexplode関数
  • 全角・半角・空白・改行で分割が可能
  • 区切り文字が空白文字ではエラーがでる
  • 区切り文字がヒットしなかった場合には空配列を返すことができる