【PHP8.x】explode関数の使い方

explode関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

explode関数は、指定された区切り文字(デリミタ)を用いて、対象の文字列を複数の部分文字列に分割し、それらを要素とする配列を生成する関数です。この関数は、例えばカンマ区切りのデータやスペース区切りの単語など、特定の規則で連結された文字列を個々の要素として扱いたい場合に非常に役立ちます。

利用する際には、まず第一引数に区切り文字となる文字列を指定します。次に第二引数には分割したい元の文字列を指定します。これにより、元の文字列の中から区切り文字が見つかるたびに文字列が分割され、分割された各部分が配列の要素として格納されます。結果として、分割された文字列の配列が返されます。

オプションとして、第三引数にlimit(リミット)という整数値を指定できます。limitを正の数で指定すると、返される配列の要素数が最大でその値に制限されます。例えばlimit2を指定すると、文字列は最初の1回だけ分割され、最大で2つの要素を持つ配列が返されます。負の数を指定すると、末尾からlimitの絶対値分の要素が除外されます。0を指定した場合は、空の配列が返されます。

注意点として、区切り文字に空文字列("")を指定した場合、PHP 8.0.0以降ではValueErrorが発生します。また、分割対象の文字列が空であり、区切り文字が空文字列でない場合は、空文字列を唯一の要素とする配列が返されます。この関数を使うことで、ログファイルからの情報抽出や、ユーザー入力のパースなど、様々な場面で文字列データを効率的に処理することが可能です。

構文(syntax)

1<?php
2explode(string $separator, string $string, int $limit = PHP_INT_MAX): array
3?>

引数(parameters)

string $separator, string $string, int $limit = PHP_INT_MAX

  • string $separator: 文字列を分割する際の区切り文字を指定します。
  • string $string: 分割したい対象の文字列を指定します。
  • int $limit = PHP_INT_MAX: 分割する要素の最大数を指定します。指定しない場合、PHP_INT_MAX(PHPで表現できる最大の整数)が使用され、制限はありません。

戻り値(return)

array|false

explode関数は、指定された区切り文字で文字列を分割し、その結果を配列として返します。区切り文字が見つからなかった場合や、空文字列を渡した場合などはfalseを返します。

サンプルコード

PHP explode 関数の使い方:文字列を分割する

1<?php
2
3/**
4 * PHPのexplode関数は、文字列を指定した区切り文字で分割し、
5 * 分割された部分文字列の配列を返すために使用されます。
6 * システムエンジニアを目指す初心者の方にも理解しやすいよう、
7 * 基本的な使い方と、limit引数の利用例を示します。
8 */
9
10// 1. 最も基本的な使い方: カンマ (,) で文字列を分割する例
11// explode(区切り文字, 分割対象の文字列)
12$string1 = "Apple,Banana,Orange";
13$fruits = explode(",", $string1);
14
15echo "--- 基本的な分割 (カンマ区切り) ---" . PHP_EOL;
16echo "元の文字列: '{$string1}'" . PHP_EOL;
17echo "分割結果 (配列): " . PHP_EOL;
18print_r($fruits);
19// この例では、"Apple", "Banana", "Orange" という3つの要素を持つ配列が生成されます。
20
21echo PHP_EOL; // 出力を区切るための改行
22
23// 2. スペースで文字列を分割する例
24// 空白文字 (" ") を区切り文字として指定します。
25$string2 = "Hello World PHP Program";
26$words = explode(" ", $string2);
27
28echo "--- スペースでの分割 ---" . PHP_EOL;
29echo "元の文字列: '{$string2}'" . PHP_EOL;
30echo "分割結果 (配列): " . PHP_EOL;
31print_r($words);
32// この例では、"Hello", "World", "PHP", "Program" という4つの要素を持つ配列が生成されます。
33
34echo PHP_EOL; // 出力を区切るための改行
35
36// 3. limit引数を使った分割: 最大分割数を指定する例
37// explode(区切り文字, 分割対象の文字列, limit)
38// limitが正の数の場合、最大でその数だけ要素が作成されます。
39// 最後の要素には、区切り文字以降の残りの文字列全体が含まれます。
40$string3 = "one:two:three:four:five";
41$limitedParts = explode(":", $string3, 3); // 最大3つの要素に分割
42
43echo "--- limit引数 (最大分割数) の利用 ---" . PHP_EOL;
44echo "元の文字列: '{$string3}'" . PHP_EOL;
45echo "limit = 3 で分割した場合: " . PHP_EOL;
46print_r($limitedParts);
47// この例では、最初の2つの区切り文字で分割され、
48// "one", "two", "three:four:five" という3つの要素を持つ配列が生成されます。
49
50?>

PHPのexplode関数は、指定した区切り文字に基づいて一つの文字列を複数の部分文字列に分割し、その結果を配列として返す機能を提供します。この関数は、ログファイルから特定の情報を抽出したり、CSVデータを行ごとに処理したりするなど、文字列から構造化されたデータを取り出す際に非常に役立ちます。

この関数は主に二つの引数を必要とします。一つ目の$separatorには、文字列を分割するための区切り文字を指定します。二つ目の$stringには、分割したい元の文字列そのものを指定します。例えば、「Apple,Banana,Orange」という文字列をカンマ「,」で分割すると、「Apple」「Banana」「Orange」という三つの要素を持つ配列が生成されます。同様に、スペース「 」を区切り文字として利用することで、「Hello World PHP」のような文字列を単語ごとに分割することも可能です。

さらに、オプションとして三つ目の引数$limitを指定できます。この引数は、生成される配列の最大要素数を制御します。$limitに正の整数を指定すると、文字列は指定された回数だけ分割され、最後の要素には区切り文字以降の残りの文字列全体がそのまま含まれます。例えば、「one:two:three:four」という文字列をコロン「:」で分割し、$limitを3と設定した場合、「one」「two」「three:four」という三つの要素からなる配列が得られます。

explode関数は、文字列の分割に成功すると、分割された部分文字列を含む配列を返します。しかし、何らかの理由で処理が失敗した場合にはfalseを返します。この関数を理解し活用することで、システム開発における文字列データの加工や解析作業を効率的に行うことが可能になります。

explode関数は、指定した区切り文字で文字列を分割し、結果を配列として返します。最も注意すべき点は、区切り文字に空の文字列("")を指定すると、戻り値がfalseとなることです。そのため、関数が正常に実行されたかを確認する習慣をつけましょう。また、分割対象の文字列内に区切り文字が見つからない場合でもエラーとはならず、元の文字列全体が唯一の要素として含まれる配列が返されます。サンプルコードにあるlimit引数を正の数で指定すると、その数だけ要素が作成され、最後の要素には残りの文字列全体が含まれる形で分割されます。

PHP explodeで文字列を複数分割する

1<?php
2
3/**
4 * 文字列を特定の区切り文字で複数の部分に分割するPHPのexplode関数の使用例。
5 *
6 * `explode`関数は、文字列を指定した区切り文字で分割し、複数の部分文字列からなる配列を生成します。
7 * `limit`引数を使用すると、生成される配列の要素数を制限できます。
8 *
9 * @param string $text 分割する元の文字列。
10 * @return void 出力例を表示するため戻り値なし。
11 */
12function demonstrateExplode(string $text): void
13{
14    echo "--- explode関数の使用例 ---\n\n";
15    echo "元の文字列: '" . $text . "'\n\n";
16
17    // 1. 基本的な使用例: カンマ (',') で文字列を分割する
18    // 結果として、複数の要素を持つ配列が生成されます。
19    $partsByComma = explode(',', $text);
20    echo "1. カンマ (',') で分割した結果:\n";
21    print_r($partsByComma);
22    echo "\n";
23
24    // 2. limit引数を使った例: 分割数を制限する
25    // `limit`に2を指定すると、最初の区切り文字で分割され、
26    // 残りの部分は最後の要素にまとめられます。
27    $partsWithLimit = explode(',', $text, 2);
28    echo "2. カンマ (',') で分割し、limitを2にした結果:\n";
29    print_r($partsWithLimit);
30    echo "\n";
31
32    // 3. 区切り文字が文字列中に見つからない場合の例
33    // この場合、元の文字列全体が1つの要素として配列に格納されます。
34    $textNoSeparator = "apple-banana-orange";
35    $partsNoSeparator = explode(';', $textNoSeparator); // セミコロンで分割
36    echo "3. 区切り文字が見つからない文字列 ('" . $textNoSeparator . "') をセミコロン (';') で分割した結果:\n";
37    print_r($partsNoSeparator);
38    echo "\n";
39
40    // 4. 空の文字列を分割対象とした場合の例
41    // この場合、1つの空文字列からなる配列が返されます。
42    $emptyString = "";
43    $partsFromEmpty = explode(',', $emptyString);
44    echo "4. 空の文字列 ('') をカンマ (',') で分割した結果:\n";
45    print_r($partsFromEmpty);
46    echo "\n";
47}
48
49// サンプル文字列を用意
50$sampleString = "apple,banana,orange,grape";
51
52// 関数を実行して結果を表示
53demonstrateExplode($sampleString);
54
55?>

PHPのexplode関数は、文字列を特定の区切り文字で複数の部分に分割し、その結果を配列として返す関数です。ログ解析やCSVデータの処理など、文字列データを構造化する際によく利用されます。

この関数は主に3つの引数を取ります。最初の$separator引数には、文字列を分割する区切り文字を文字列で指定します。次に$string引数には、分割したい元の文字列を指定します。そしてオプションの$limit引数には、生成される配列の要素数を最大でいくつにするかを整数値で指定できます。$limitを指定しない場合、すべての区切り文字で分割され、文字列中の区切り文字の数に応じた要素数を持つ配列が返されます。

戻り値は通常、分割された部分文字列を要素とする配列です。例えば、「apple,banana,orange」をカンマで分割すると、['apple', 'banana', 'orange']という配列が返されます。もし指定した区切り文字が元の文字列中に見つからない場合でも、元の文字列全体を1つの要素として含む配列が返されます。また、分割対象の文字列が空の場合、空文字列を1つの要素とする配列が返されます。$limitに2を指定すると、最初の区切り文字で分割された後、残りの部分はまとめて最後の要素として格納されるため、結果の配列は最大で2つの要素を持つことになります。関数が失敗した場合、falseが返される可能性があります。

explode関数は、文字列を特定の区切り文字で分割し、その部分文字列を要素とする配列を返します。区切り文字が元の文字列中に見つからない場合でもエラーにならず、元の文字列全体を1つの要素として含む配列が返されますのでご注意ください。また、分割対象の文字列が空の場合には、空文字列を1つ含む配列が返されます。

第三引数のlimitを指定すると、分割される要素の数を制限できます。このlimitに達すると、残りの文字列は分割されずに最後の要素としてまとめられます。この挙動を理解しておくことで、意図しない配列の構造になることを防ぎ、安全にコードを利用できます。

関連コンテンツ

【PHP8.x】explode関数の使い方 | いっしー@Webエンジニア