icon
icon

PHPのsplitで文字列を分解して配列で返す方法【初心者向け】

プログラミング初心者向けにsplit関数を使って文字列を分解して配列で返す方法について解説しています。推奨のpreg_splitの使い方、explode関数との違いについて実際にソースコードを書きながら説明しています。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

PHPのsplitで文字列を分解して配列で返す方法について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

しかし、split関数はPHP5.3から非推奨となり、PHP 7.0.0で削除されています。

split関数の代用として、preg_split関数やexplode関数などがあり、本記事ではこの2つについても解説していますので、ぜひ理解していきましょう。

目次

1時間でできる無料体験!

そもそもPHPについてよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。

 

大石ゆかり

split関数というのは何でしょうか?

田島悠介

文字列を何らかの文字で区切って、配列として分割してくれる関数なんだよ。

大石ゆかり

文字列が区切られているってことは、文章というよりもデータに近い感じですか?

田島悠介

そうそう。URLなんかもスラッシュで区切られてるよね。とりあえずsplit関数について見てみよう!

 

split関数とは

split関数は、正規表現で文字列を分割する関数です。

文字列、あるいは文字列が入った変数に対して何らかの条件で分割し、配列にして返してくれます。

 

splitは非推奨の関数

PHP5.3からはsplitが非推奨になりました。

PHP 7.0.0で削除されています。

splitの代替えの関数はpreg_splitです。

PHPが採用している正規表現は複数あり、PHPのsplit関数が内部で使用するのはPOSIX正規表現です。

PHPのバージョンが上がり続ける中で、POSIX正規表現自体が非推奨となった(regex拡張モジュールが非推奨)ことで 、PCREモジュールのPerl互換正規表現を使用するpreg_split関数を使う必要があるということです。

preg_splitもsplitとほぼ同じで、正規表現ルールにもとづいて文字列を分割して返します。

 

split関数の代用となる関数

split関数の代用としてpreg_split関数、explode関数があります。

正規表現を使用して文字列を分割する場合はpreg_split関数を使用します。

正規表現を使用しない場合はexplode関数が使用できます。

 

preg_split関数とは

正規表現によって文字列を分割して、配列として返す関数です。

<?php
    $str = "a,b,c";
    $result = preg_split("/,/", $str);
    print_r($result);
?>

Array
(
    [0] => a
    [1] => b
    [2] => c
)

「/,/」という正規表現に当てはまる「,」を基準に「a,b,c」を「a」「b」「c」に分割した配列を返しています。

「/,/」では正規表現を駆使した感じには見えませんので、後述で正規表現らしいものを紹介します。

 

explode関数とは

正規表現は使用せず、文字によって文字列を分割して配列として返す関数です。

<?php
    $str = "a,b,c";
    $result = explode(",", $str);
    print_r($result);
?>

Array
(
    [0] => a
    [1] => b
    [2] => c
)

「,」で「a,b,c」を「a」「b」「c」に分割した配列を返しています。

 

大石ゆかり

正規表現で分割する、区切るって難しそうですね。

田島悠介

explode関数のほうが使う頻度が高いので、そういうこともできるって覚えるぐらいでいいかな。

大石ゆかり

わかりました!

 

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

split(preg_split)関数の書き方

splitとpreg_splitの書き方を見てみます。

 

split関数の書き方

split(パターン文字列 , パターンで区切る対象文字列 [, 分割リミット数 = -1 ] ) 

パターン文字列は、文字列を区切る正規表現を書きます。

パターンで区切る対象文字列には、区切って配列として分割する文字列や文字列が入っている変数を指定します。

分割リミット数は、オプションで省略しても構わないのですが、分割の最大数を指定できます。

残った場合、最後に詰め込まれます。

-1というのは省略時の初期値で制限なし(条件に従っていくつでも分割する)という意味です。

 

preg_split関数の書き方

preg_split(パターン文字列 , パターンで区切る対象文字列[, 分割リミット数 = -1 [, フラグオプション = 0 ]] )

パターン文字列は、 パターンで区切る対象文字列、分割リミット数についてはsplitと同様です。

フラグオプションは配列として返す値に条件をつけることができます。

 

コラム

コスパとタイパ、両方結果的に良くなる良くなる学び方とは?

「スクールは高いし時間も縛られて効率が悪い」と考える方は多いと思います。
もちろん、時間も費用もかかることは間違いありません。
ただ 結果的に無駄な学びにお金も時間もかける方がリスクが高いという考えもあります。

コスパ・タイパ最適化の参考として、 テックアカデミー卒業生がスクールを選んだ理由 をご紹介します。

  • ・困ったときに、質問や相談できる相手がいるため挫折しなかった
  • ・プロとして必要なスキルのみを深く学べたので無駄がなかった
  • ・副業案件の提供と納品までのサポートがあったので目的を達成できた

安価・短期間で広く浅く学んでも意味がありません。 本当に自分の目的が達成できるか、それが重要です。
自分にどのスキルや学び方が合っているか、どんな学習方法かなど、お気軽に 無料相談 に参加してみませんか?

カウンセラー・現役のプロへ、何でも気軽に無料相談可能。 30分か60分お好きな時間が選べて、かつ3回まで すべて無料で ご利用できます。
無理な勧誘は一切ない ので、お気軽にご参加ください。

今なら相談した方限定の割引・参加特典付き! 無料相談はこちら

実際に書いてみよう

ある文字列を英単語ごとに区切って、配列にしてみましょう。

<?php
    $keyword = "1apple2lemon3grape4"; 
    $array_keyword = preg_split('/[a-z]+/', $keyword, -1, PREG_SPLIT_NO_EMPTY); 
    print_r($array_keyword); 
?>

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)

[a-z]はアルファベットa~zのどれかの文字を表しています。

+は直前のパターン文字列が1回以上続くことを意味します。

[a-z]が1回以上続く、つまり「/[a-z]+/」とはなにかしらの英単語(abc, xyzなどの意味のないアルファベットの羅列も含む)を表しています。

その結果、文字列「1apple2lemon3grape4」が英単語ごとに分割され「1」「2」「3」「4」の配列が返されます。

「PREG_SPLIT_NO_EMPTY」は、オプションで空文字列以外だけを返すようにします。

「print_r」の表示結果が空白を含まず、それぞれの文字だけが配列に代入されていれば成功です。

 

おわりに

PHPのpreg_split関数の使い方を解説しました。

頻繁に利用する関数ではないですが、いざという時に便利なので、ぜひ書き方を覚えておきましょう。

 

大石ゆかり

空白が、バックスラッシュとsで表現されてますね。+は1回以上って意味なんですか?

田島悠介

そうそう。ちょっと難しいけど正規表現の書き方なんだ。

大石ゆかり

文字で区切るexplodeのほうがわかりやすいですね。

田島悠介

正規表現によって複雑に区切るのが、preg_split関数、単純に文字で区切るのがexplodeって覚えるといいね。

 

1時間でできる無料体験!

PHPを学習中の方へ

これで解説は終了です、お疲れさまでした。

  • つまずかず「効率的に」学びたい
  • 副業や転職後の「現場で使える」知識やスキルを身につけたい

プログラミングを学習していて、このように思ったことはありませんか?

テックアカデミーのPHP/Laravelコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。

合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、PHP/Laravelを使ったWebアプリケーション開発を学べます。

まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。

時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学で学習していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する