【今すぐ無料で試す】ゼロから始める定額・学び放題のプログラミング学習サービス「侍テラコヤ」

【PHP入門】preg_match_all関数を分かりやすく解説

PHPを知っている人

正規表現のpreg_match_all関数を利用することで繰り返し正規表現検索することができます。

 

このページでは正規表現とはどのようなものか、preg_match_all関数とはどのようなものか、preg_match_all関数のサンプルプログラムについて解説していきます。

 

気になる方は是非、最後まで読んで頂ければ幸いです。

 

\単月定額と比べて総額最大48,000円OFF!/
学び応援キャンペーン実施中!
コスパ最高! 月額1,980円〜利用できる!

最短30秒で登録完了! 今すぐ侍テラコヤでPHPを学ぶ!

 




 

正規表現を利用することで、「特定の文字列が数字なのか英字なのか」等、様々なパターンをチェックすることができます。

 

例えば、お問い合わせフォームの電話番号、郵便番号、メールアドレスが正しく入力されているか正規表現を利用してチェックすることができます。

 

具体的に郵便番号を正規表現でどのようにチェックするのかを見てみましょう。

 

郵便番号は〒の後に「3つの数字」、「-」、「4つの数字」が並んでいます。

 

郵便番号を正規表現でチェックする場合、どのように記述するのでしょうか。

 

正規表現を利用して、[0-9]{3}-[0-9]{4}と記述することができます。

 

上記は先頭から「0-9の数値3桁」、「0-9の数値4桁」かどうかをチェックするという意味になっています。

 

正規表現を使用しない場合、何段階に分けてチェックする必要があります。

 

しかし、正規表現を利用することで入力内容と一致するかどうかを簡潔に記述することができます。

 

このように正規表現はデータが正しく入力されたかをチェックし、データの正確性を向上させる役割を担っています。

 

正規表現をもっと詳しく知りたい方は是非「独習PHP」をご覧ください。

 

PHPでWebページ/アプリケーションを開発する際に必要な基礎的な知識、PHPの基本構文から、クラス、データベース連携、セキュリティまで、詳細かつ丁寧に解説してあります。

PHPを知っている人

 

 

 




 

preg_match_all関数とは?

 

preg_match_all関数を使用することで繰り返し正規表現検索を行うことができます。

 

一方、preg_match関数は一つの実行結果のみを返します。

 

つまり、preg_match関数は複数のマッチする文字列があった場合でも、一番始めにマッチした文字列のみの表示となります。

 

このため、すべてのマッチする文字列を見つけたい場合、preg_match_all関数を利用する必要があります。

 

preg_match_all関数の構文は以下の通りです。

 

 

int preg_match_all (string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset]]])

 

 




 

引数

 

$pattern

 

正規表現パターン

 

$subject

 

検索対象の文字列

 

&$matches

 

検索結果が代入される配列

 

$flags

 

動作フラグ

 

注意

 

$flagsに「PREG_PATTERN_ORDER」を指定することでパターン全体、サブマッチパターン、パターン単位に結果がまとめられます。

 

 

$offset

 

検索開始位置

 

通常、検索は対象文字列の先頭から開始されます。

 

オプションのパラメータ$offsetを使用して検索の開始位置を(バイト単位で)指定することも可能です。

 




 

preg_match_all関数のサンプルプログラム

 

PHPを知っている人

それでは実際にpreg_match_all関数のサンプルプログラムを見てみましょう。

 

<?php

$string = "Aさんの郵便番号は192-0043、Bさんの郵便番号は162-2235です。";

if (preg_match_all("/([0-9]{3})-([0-9]{4})/", $string, $data, PREG_SET_ORDER)) {

 echo "マッチしました。";

 } else {

 echo "マッチしていません。";

 }

print_r($data);

?>

 

上記は$stringを先頭から「0-9の数値3桁」と「0-9の数値4桁」の正規表現パターンにマッチしているかどうかを繰り返しチェックするサンプルプログラムとなっています。

 

PREG_SET_ORDERを指定することで、$dataにはマッチした文字列から順に格納されていきます。

 

結果は以下の通りです。

 

マッチしました。

Array (

 [0] => Array (

  [0] => 192-0043 [1] => 192 [2] => 0043 )

 [1] => Array (

  [0] => 162-2235 [1] => 162 [2] => 2235 )

)

 

このようにpreg_match_all関数を使用することで簡単に正規表現検索ができるので便利です。

 




 

PHPをもっと学びたい方へ

 

PHPを知っている人

最後まで読んで頂きまして、ありがとうございます。

 

PHPをもっと学びたいという方にオススメの教材があります。

 

確かな力が身につくPHP「超」入門

 

確かな力が身につくPHP「超」入門」はPHPをより実践的に学ぶことができます。

 

コマースサイトに必須のショッピングカートやログイン処理の作成から、商品管理などを行うデータベースの設定・制御法まで、Web開発の現場で求められる知識をサンプルで体験しながら学ぶことが可能です。

 

そのため、PHPを一通り学んだ方にオススメできる一冊です。

 

是非、「確かな力が身につくPHP「超」入門」に挑戦してみてはいかがでしょうか?

PHPを知っている人

 

 

Udemy

 

Udemy(ユーデミー)」ではPHPを学ぶことができる講座を多数取り扱っています。

 

頻繁にセールが行われており、時には半額以下(最大90%OFF)になることも。

 

是非、「Udemy(ユーデミー)」に挑戦してみてはいかがでしょうか?

PHPを知っている人

 

TechAcademy

 

TechAcademy(テックアカデミー)」は、オンラインでプログラミングやアプリ開発を学べるスクールです。

 

現役のエンジニアやデザイナーから学ぶことができ、Web制作やWebデザイン、マーケティングなど幅広いITスキルを学ぶことができます。

 

なんと当スクールではPHPを学ぶことができます。

 

無料体験も行っているので是非、体験してみてはいかがでしょうか?

PHPを知っている人

 

 

 

 

ポイント

 

PHPを知っている人

今回のポイントは以下の通りです。

 

  • preg_match_all関数は繰り返し正規表現検索を行うことができます

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です