原文: PHP Explode – How to Split a String into an Array

PHP の explode() 関数は文字列を配列に変換します。文字列の各文字には 0 から始まるインデックスが付けられます。組み込みの implode() 関数と同様に、explode() 関数はデータ (文字列) を変更しません。

explode() 関数の構文

explode() 関数は三つのパラメータを取ります。

  • 区切り文字「seperator」
  • 配列に変更する文字列「string」
  • 上限「limit」

全体の構文は以下のようになります。

explode(seperator, string, limit)

implode() 関数は区切り文字が指定されていなくても動作しますが、explode() 関数は区切り文字がないと動作しません。ですから、文字列を配列に分割する場合、区切り文字が必要です。limit パラメータには、期待される配列の要素数を指定することができます。これは任意のパラメータです。

implode() の例

この例で、文字列が「Hello World」とします。もし、この文字列を explode() 関数に入力した場合、Hello には 0 のインデックスが付けられて、World には 1 のインデックスが付けられます。配列はゼロベースのインデックス付けであることを忘れないでください。

$str = "Hello world";
$newStr = explode(" ", $str);

// 配列を出力するので、print_r() を使うことができます。
print_r($newStr); 
ss1-3

もし explode() 関数の上限を指定したら、インデックスは上限に指定された数を超えることはありません。例えば、もし 2 を指定したら、全ての文字列が表示されますが、インデックスは 2 を超えません。

$str = "CSS, HTML, PHP, Java, JavaScript";
$newStr = explode(" ", $str, 2);

// 配列を出力するので、print_r() を使うことができます。
print_r($newStr); 
ss2-3

最初の要素はインデックス 0 を取り、残りのコンマで区切られた要素は 1 を取ります。インデックスは、指定された 2 の上限を超えることはありません。

下記の explode() 関数は、文字列内のスペースを見て、文字列を配列に分割します。もし異なる二つの単語を繋げて入力した場合、それらは一つとして扱われます。

$str = "CSS HTMLPHP Java JavaScript";
$newStr = explode(" ", $str);

// 配列を出力するので、print_r() を使うことができます。
print_r($newStr); 
ss5-2

HTML と PHP が一緒に出力されたのは、その間にスペースがなかったためです。

結論

この記事では、PHP の explode() 関数の使い方を学びました。

区切り文字がなくても動作する implode() とは異なり、explode() では区切り文字が非常に重要です。区切り文字を指定しないと、explode() は期待通りに動作しませんので、注意してください。

$str = "CSS, HTML, PHP, Java, JavaScript";
$newStr = explode($str, 2);

// 配列を出力するので、print_r() を使うことができます。
print_r($newStr); 
ss3-3

もし区切り文字が空の文字列だった場合、エラーが発生します。

ss4-3

お読みいただき、ありがとうございました。