【PHP8.x】GET_MATCH定数の使い方

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

作成日: 更新日:

基本的な使い方

『GET_MATCH定数は、RegexIteratorクラスの動作モードを指定するための定数です。』RegexIteratorは、配列などの繰り返し可能なデータの中から、指定した正規表現にマッチする要素だけを抽出して処理するためのクラスです。このGET_MATCH定数をRegexIteratorのコンストラクタやsetFlagsメソッドでフラグとして設定すると、イテレータが返す値の形式が変更されます。具体的には、通常はマッチした要素のキーと値をそのまま返すのに対し、GET_MATCHを指定した場合は、正規表現にマッチした部分文字列の配列を返すようになります。この返される配列の構造は、PHPのpreg_match()関数がマッチ結果を格納する配列と同じ形式です。配列のインデックス0にはマッチした文字列全体が格納され、それ以降のインデックスには正規表現パターン内で丸括弧によってキャプチャされた各部分文字列が格納されます。この機能により、データの中から特定のパターンを抽出し、その抽出した文字列自体を直接利用する処理を簡潔に記述できます。

構文(syntax)

1<?php
2
3$data = new ArrayIterator(['test1', 'skip', 'test2']);
4
5$iterator = new RegexIterator(
6    $data,
7    '/test(\d)/',
8    RegexIterator::GET_MATCH
9);
10
11foreach ($iterator as $match) {
12    print_r($match);
13}
14
15?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

int

RegexIterator::GET_MATCHは、preg_match()関数のように、マッチした文字列全体を返します。