PHPのexplode関数!初心者も理解できる10の使い方と例

PHPのexplode関数の使用方法と具体的な例を表す図解 PHP
この記事は約16分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればサンプルコードを活用して機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

PHPを使い始めたばかりのあなた。

文字列を扱う上で必要不可欠な関数、それがPHPのexplode関数です。

この記事を読めば、文字列を分割して配列にすることができるようになります。

初めての方でも大丈夫、わかりやすい解説と10の具体的な例を通じて、explode関数の魅力を一緒に探っていきましょう。

●PHPのexplode関数とは

PHPのexplode関数は、文字列を特定の区切り文字で分割して配列にするための関数です。

この関数を用いることで、長い文字列を小さな部分に分けて操作することが可能になります。

つまり、文字列データを扱う上で非常に有用な関数と言えるでしょう。

○explode関数の基本的な説明

explode関数の基本的な使用方法は次の通りです。

explode(区切り文字, 分割する文字列, [最大分割数]);

この関数は3つのパラメーターを取ります。

  1. 区切り文字:文字列を分割する際の区切りとなる文字または文字列です。
  2. 分割する文字列:区切り文字によって分割される対象の文字列です。
  3. 最大分割数:このオプションパラメーターを設定すると、分割する数を制限することができます。

この関数は分割した結果を配列として返します。

区切り文字が存在しない場合や空の文字列を区切り文字として指定した場合、対象の文字列全体を1つの要素とした配列が返されます。

●explode関数の使い方

ここでは、explode関数の具体的な使い方をサンプルコードと共に説明します。

○サンプルコード1:基本的な文字列の分割

最初に紹介するのは、最も基本的な使い方です。

区切り文字としてカンマ(,)を使用し、文字列を分割してみましょう。

<?php
$str = "apple,banana,cherry";
$fruits = explode(",", $str);
print_r($fruits);
?>

このコードでは、カンマで区切られた文字列を分割しています。

explode関数により、$strの中の文字列がカンマによって分割され、その結果が$fruitsという配列に格納されます。

print_r関数を使用して、その結果を出力します。

この例では、"apple,banana,cherry"という文字列が"apple""banana""cherry"という3つの要素を持つ配列に分割されます。

このコードを実行すると、次のような結果が出力されます。

Array
(
    [0] => apple
    [1] => banana
    [2] => cherry
)

以上がPHPのexplode関数の基本的な使い方です。

次に、特殊な区切り文字を用いた分割について解説します。

○サンプルコード2:特殊な区切り文字を使った分割

次に、特殊な区切り文字を用いた文字列の分割について見てみましょう。

ここでは、改行文字(\n)を区切り文字として使用します。

<?php
$str = "apple\nbanana\ncherry";
$fruits = explode("\n", $str);
print_r($fruits);
?>

このコードでは、改行文字\nを使って文字列を分割しています。

explode関数により、$strの中の文字列が改行文字によって分割され、その結果が$fruitsという配列に格納されます。

print_r関数を使用して、その結果を出力します。

この例では、"apple\nbanana\ncherry"という文字列が"apple""banana""cherry"という3つの要素を持つ配列に分割されます。

このコードを実行すると、次のような結果が出力されます。

Array
(
    [0] => apple
    [1] => banana
    [2] => cherry
)

これは改行文字が区切り文字として働き、文字列が適切に分割された結果を示しています。

○サンプルコード3:分割数を制限する方法

次に、explode関数の第3引数を使った分割数の制限について説明します。

この引数を指定すると、文字列を何個に分割するかを制限できます。

<?php
$str = "apple,banana,cherry,grape,lemon";
$fruits = explode(",", $str, 3);
print_r($fruits);
?>

このコードでは、カンマを区切り文字として、文字列を3つに分割しています。

explode関数の第3引数に3を設定しているため、文字列は最初の2つのカンマで分割され、残りの部分は一つの要素として配列に格納されます。

その結果をprint_r関数で出力します。

このコードを実行すると、次のような結果が出力されます。

Array
(
    [0] => apple
    [1] => banana
    [2] => cherry,grape,lemon
)

この結果から分かる通り、文字列は3つの要素に分割されています。

最初の2つの要素はカンマで分割された"apple""banana"で、最後の要素は"cherry,grape,lemon"となっています。

これは最初の2つのカンマで分割した後の残りの文字列が一つの要素として配列に格納されているためです。

以上がPHPのexplode関数で文字列を分割する際の基本的な使い方や応用例となります。

次に、さらに応用的な例を見ていきましょう。

●explode関数の応用例

PHPのexplode関数はその基本的な用途だけでなく、さまざまな応用例もあります。

次にいくつかの具体的な応用例を見ていきましょう。

○サンプルコード4:ファイルのパス情報の分析

explode関数はファイルのパス情報を分析するのにも使えます。

下記のコードは、ディレクトリの区切り文字/を用いてファイルのパスを分析します。

<?php
$path = "/home/user/documents/file.txt";
$path_parts = explode("/", $path);
print_r($path_parts);
?>

このコードでは、/を使って$pathの中の文字列を分割しています。

結果として得られる配列$path_partsには、各ディレクトリ名とファイル名が順に格納されます。

この例では、"/home/user/documents/file.txt"という文字列が"home", "user", "documents", "file.txt"という要素を持つ配列に分割されます。

このコードを実行すると、次のような結果が得られます。

Array
(
    [0] => 
    [1] => home
    [2] => user
    [3] => documents
    [4] => file.txt
)

この結果は、文字列が/で適切に分割され、その結果が配列に格納されていることを表しています。

○サンプルコード5:複数の区切り文字を含むデータの処理

次のコードは、複数の異なる区切り文字(ここではカンマと空白)を使って文字列を分割する方法を示しています。

<?php
$str = "apple, banana cherry,grape, lemon";
$fruits = explode(",", str_replace(" ", ",", $str));
print_r($fruits);
?>

このコードでは、まずstr_replace関数を使って文字列中の空白をカンマに置き換えています。

その後、結果をexplode関数に渡して文字列を分割しています。その結果をprint_r関数で出力します。

このコードを実行すると、次のような結果が得られます。

Array
(
    [0] => apple
    [1] => banana
    [2] => cherry
    [3] => grape
    [4] => lemon
)

これは文字列が適切に分割され、その結果が配列に格納されていることを示しています。

○サンプルコード6:CSVデータの解析

explode関数はCSVデータの解析にも適用可能です。

CSVデータはカンマで区切られた値を持つテキスト形式のデータで、広くデータの交換や保存に利用されます。

explode関数を使ってCSV形式の文字列を解析するコードを紹介します。

<?php
$csv_data = "John, Doe, john@example.com";
$data_parts = explode(",", $csv_data);
print_r($data_parts);
?>

このコードでは、CSV形式の文字列$csv_dataをカンマ,で分割しています。

その結果は配列$data_partsに格納され、その後print_r関数で出力されます。

このコードを実行すると、次のような結果が得られます。

Array
(
    [0] => John
    [1] =>  Doe
    [2] =>  john@example.com
)

得られた配列には、CSV形式の文字列の各部分が順番に格納されていることがわかります。

○サンプルコード7:複雑な文字列データの分析

次に、より複雑な文字列データの分析を行う例を見てみましょう。

下記のコードは、文字列中に含まれるHTMLタグを取り除く方法を表しています。

<?php
$html_str = "<p>Hello</p><p>World</p>";
$text_parts = explode("<p>", str_replace("</p>", "", $html_str));
print_r($text_parts);
?>

このコードでは、まずstr_replace関数を使って$html_str中の"</p>"タグを空文字列に置換しています。

その後、得られた結果をexplode関数に渡し、"<p>"タグで文字列を分割しています。

このコードを実行すると、次のような結果が得られます。

Array
(
    [0] => 
    [1] => Hello
    [2] => World
)

この結果は、HTMLタグが適切に取り除かれ、各パラグラフのテキストが配列に格納されていることを示しています。

これらの例を通じて、explode関数がどのようにして複雑な文字列データの解析に役立つかを理解できるでしょう。

次に、さらに具体的な応用例を見ていきましょう。

○サンプルコード8:文字列から配列への変換

PHPのexplode関数は、文字列を特定の区切り文字で分割し、結果を配列として返す機能を持つため、文字列から配列への変換に使用することができます。

下記のコードは、スペース区切りの単語リストから配列を作成する例を示しています。

<?php
$words = "apple banana orange";
$word_list = explode(" ", $words);
print_r($word_list);
?>

このコードでは、スペースで区切られた単語リストを変数$wordsに格納し、その後explode関数で単語ごとに分割します。

分割結果は配列$word_listに格納され、その後print_r関数で出力されます。

このコードを実行すると、次のような結果が得られます。

Array
(
    [0] => apple
    [1] => banana
    [2] => orange
)

このように、文字列から配列を作成するためにexplode関数を利用することが可能です。

この機能は、文字列を分析し、特定の部分を抽出または操作する必要がある場合に特に役立ちます。

○サンプルコード9:日付や時刻データの処理

次に、日付や時刻データの処理を行うためのexplode関数の使用例を見てみましょう。

日付や時刻データは特定の形式で表現されることが多く、その形式を解析し分割するためにexplode関数を使用することができます。

下記のコードでは、YYYY-MM-DD形式の日付文字列を年、月、日に分割する例を表しています。

<?php
$date_str = "2023-06-05";
$date_parts = explode("-", $date_str);
print_r($date_parts);
?>

このコードでは、ハイフンで区切られた日付文字列$date_strを分割し、その結果を配列$date_partsに格納しています。

このコードを実行すると、次のような結果が得られます。

Array
(
    [0] => 2023
    [1] => 06
    [2] => 05
)

得られた配列には、日付の年、月、日が順に格納されています。このように、explode関数は日付や時刻データの処理にも適しています。

○サンプルコード10:マルチバイト文字列の分割

PHPのexplode関数は、マルチバイト文字列の分割にも使用することができます。

ただし、日本語などのマルチバイト文字を扱う場合は、mb_split関数やpreg_split関数を使用する方が適切かもしれません。

これらの関数は、マルチバイト文字列に対応しています。

下記のコードは、日本語の文章を句点(。)で分割する例を表しています。

<?php
$text = "春はあけぼの。夏は夜。秋は夕暮れ。";
$sentences = explode("。", $text);
print_r($sentences);
?>

このコードでは、句点で区切られた文章を変数$textに格納し、その後explode関数で文章を句点ごとに分割しています。

分割結果は配列$sentencesに格納され、その後print_r関数で出力されます。

このコードを実行すると、次のような結果が得られます。

Array
(
    [0] => 春はあけぼの
    [1] => 夏は夜
    [2] => 秋は夕暮れ
    [3] => 
)

この結果からわかるように、マルチバイト文字列も問題なく分割することが可能です。

ただし、注意すべき点として、最後に空の要素が配列に含まれていることが挙げられます。

これは、句点で終わる文章を分割した結果、句点後の空の文字列が配列に含まれるためです。

これを防ぐためには、分割後の配列から空の要素を削除する処理を追加すると良いでしょう。

●注意点と対処法

先程のマルチバイト文字列の分割例で見たように、explode関数を使用する際にはいくつかの注意点が存在します。

最も一般的なのは、分割した結果として空の配列要素が生成されることがある点です。

これは、区切り文字が文字列の最後にある場合や、2つの区切り文字の間に文字がない場合に発生します。

この問題を解決するためには、array_filter関数を使用して配列から空の要素を削除することが一つの解決策です。

<?php
$text = "春はあけぼの。夏は夜。秋は夕暮れ。";
$sentences = explode("。", $text);
$sentences = array_filter($sentences,

 'strlen');
print_r($sentences);
?>

このコードでは、array_filter関数を使用して空の要素を配列から削除しています。

その結果、次のような出力が得られます。

Array
(
    [0] => 春はあけぼの
    [1] => 夏は夜
    [2] => 秋は夕暮れ
)

以上のように、explode関数を使用する際の注意点とその対処法を理解することで、より効果的にこの関数を利用することが可能となります。

●カスタマイズ方法

PHPのexplode関数はその基本的な機能だけでなく、少々のカスタマイズを施すことでさらに強力な文字列操作の道具となります。

ここでは、explode関数の一部をカスタマイズする方法を2つご紹介します。

1つ目のカスタマイズ方法として、explode関数の第三引数を利用する方法があります。

この第三引数は省略可能ですが、指定することで分割する最大の要素数を制限することができます。

下記のコードでは、スペースで区切られた文字列を2つの要素に分割する例を表しています。

<?php
$text = "PHP explode 関数 チュートリアル";
$words = explode(" ", $text, 2);
print_r($words);
?>

このコードでは、スペースで区切られた文字列を変数$textに格納し、その後explode関数で文字列をスペースごとに分割しています。

分割結果は配列$wordsに格納され、その後print_r関数で出力されます。

なお、explode関数の第三引数に2を指定しているため、2つの要素に分割されます。

このコードを実行すると、次のような結果が得られます。

Array
(
    [0] => PHP
    [1] => explode 関数 チュートリアル
)

2つ目のカスタマイズ方法として、preg_split関数を利用する方法があります。

preg_split関数は、正規表現を使った文字列の分割を可能にします。

これにより、より複雑なパターンの文字列の分割が可能となります。

下記のコードは、複数の種類の空白文字(スペース、タブ、改行)で文字列を分割する例を表しています。

<?php
$text = "PHP\texplode\n関数 チュートリアル";
$words = preg_split("/[\s]+/", $text);
print_r($words);
?>

このコードでは、正規表現/[\s]+/を使用して、一つ以上の連続する空白文字を区切り文字として文字列を分割しています。

分割結果は配列$wordsに格納され、その後print_r関数で出力されます。

このコードを実行すると、次のような結果が得られます。

Array
(
    [0] => PHP
    [1] => explode
    [2] => 関数
    [3] => チュートリアル
)

以上のように、PHPのexplode関数はさまざまなカスタマイズ方法

を用いることで、様々な状況に対応することが可能です。

最適な方法を選択し、プログラムの品質と効率を高めましょう。

まとめ

本記事では、PHPのexplode関数の使用方法とその使い方を10の具体的な例とともに解説しました。

初めてPHPのexplode関数を使う方でも理解できるよう、その基本的な使用法から、より高度なカスタマイズ方法まで詳しく説明しました。

特に、explode関数の第三引数の使い方や、正規表現を使ったpreg_split関数の活用法など、初心者にとってはあまり知られていないかもしれませんが、これらの機能は実際のプログラミングにおいて非常に役立ちます。

また、マルチバイト文字列の分割方法や、文字列の最大長を超えた場合の挙動など、explode関数を安全に使うための注意点も紹介しました。

これらの知識を身につけることで、より効率的かつ安全にPHPの文字列操作を行うことができるでしょう。

最後に、本記事がPHPのexplode関数の理解に役立ったことを願っています。

これからもPHPを学んでいく中で、explode関数があなたの力強い味方となることでしょう。