正規表現のpreg_match_all関数を利用することで繰り返し正規表現検索することができます。
このページでは正規表現とはどのようなものか、preg_match_all関数とはどのようなものか、preg_match_all関数のサンプルプログラムについて解説していきます。
是非、最後まで読んで頂ければ、幸いです。
目次
1.正規表現とは?
正規表現を利用することで、「特定の文字列が数字なのか英字なのか」等、様々なパターンをチェックすることができます。
例えば、お問い合わせフォームの電話番号、郵便番号、メールアドレスが正しく入力されているか正規表現を利用してチェックすることができます。
具体的に郵便番号を正規表現でどのようにチェックするのかを見てみましょう。
郵便番号は〒の後に「3つの数字」、「-」、「4つの数字」が並んでいます。
郵便番号を正規表現でチェックする場合、どのように記述するのでしょうか。
正規表現を利用して、[0-9]{3}-[0-9]{4}と記述することができます。
上記は先頭から「0-9の数値3桁」、「0-9の数値4桁」かどうかをチェックするという意味になっています。
正規表現を使用しない場合、何段階に分けてチェックする必要があります。
しかし、正規表現を利用することで入力内容と一致するかどうかを簡潔に記述することができます。
このように正規表現はデータが正しく入力されたかをチェックし、データの正確性を向上させる役割を担っています。
正規表現をもっと詳しく知りたい方は以下の記事も是非ご覧になって下さい。

2.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
検索開始位置
3.preg_match_all関数のサンプルプログラム
それでは実際にpreg_match_all関数のサンプルプログラムを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?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にはマッチした文字列から順に格納されていきます。
結果は以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
マッチしました。 Array ( [0] => Array ( [0] => 192-0043 [1] => 192 [2] => 0043 ) [1] => Array ( [0] => 162-2235 [1] => 162 [2] => 2235 ) ) |
このようにpreg_match_all関数を使用することで簡単に正規表現検索ができるので便利です。
4.PHPをもっと学びたい方へ
最後まで読んで頂きまして、ありがとうございます。
PHPをもっと学びたいという方はいないでしょうか?
上記のように考えている方にオススメの教材があります。
確かな力が身につくPHP「超」入門
そのため、PHPを一通り学んだ方にオススメできる一冊です。
是非、挑戦してみてはいかがでしょうか?
以下の記事でPHPを学ぶことができるオススメの本をまとめていますので、よかったらご覧になって下さい。

Udemy
UdemyではPHPを学ぶことができる講座を多数取り扱っています。
以下の記事でPHPを学ぶことができるオススメの講座をまとめていますので、よかったらご覧になって下さい。

TechAcademy
TechAcademy [テックアカデミー]ではPHPを学ぶことができます。
無料体験も行っているので是非、体験してみてはいかがでしょうか?
TechAcademyについてまとめた記事もありますので、よかったらご覧になって下さい。

5.ポイント
- preg_match_all関数は繰り返し正規表現検索を行うことができます