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

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

作成日: 更新日:

基本的な使い方

ALL_MATCHES定数は、RecursiveRegexIteratorクラスの動作モードを指定するために用意された定数の一つです。この定数は、RecursiveRegexIteratorのインスタンスを生成する際のコンストラクタの第3引数($mode)に渡して使用します。RecursiveRegexIteratorは、ディレクトリ構造のような再帰的なデータ構造を順番に処理しながら、各要素の名前が指定した正規表現パターンに一致するかを判定するためのクラスです。ALL_MATCHESモードを設定した場合、RecursiveIteratorIteratorと組み合わせて使用する際に子要素を取得するgetChildren()メソッドの挙動が変化します。具体的には、getChildren()メソッドが呼び出されると、現在処理中の要素が持つ子要素の中から、正規表現にマッチした全ての項目を漏れなく、新しいイテレータとして返します。これにより、階層構造を持つデータの中から、特定のパターンに一致する子要素をすべて効率的に抽出することが可能となります。

構文(syntax)

1<?php
2
3$data = [
4    'test_A',
5    'ignore_B',
6    [
7        'test_C',
8        'test_D',
9        'ignore_E'
10    ],
11    'test_F'
12];
13
14$arrayIterator = new RecursiveArrayIterator($data);
15
16$regexIterator = new RecursiveRegexIterator(
17    $arrayIterator,
18    '/^test_/',
19    RecursiveRegexIterator::ALL_MATCHES
20);
21
22$iterator = new RecursiveIteratorIterator($regexIterator);
23
24foreach ($iterator as $value) {
25    echo $value . PHP_EOL;
26}

引数(parameters)

引数なし

引数はありません

戻り値(return)

int

RecursiveRegexIterator::ALL_MATCHESは、正規表現にマッチする全ての文字列を返すための定数です。