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

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

作成日: 更新日:

基本的な使い方

MATCH定数は、RecursiveRegexIteratorクラスの動作モードを指定するための定数です。RecursiveRegexIteratorは、ディレクトリ構造のように階層を持つデータ群を再帰的に処理しながら、指定した正規表現に一致する要素だけを抽出するためのクラスです。このクラスを利用する際、どのよう な基準で要素を返すかをコンストラクタの引数で設定する必要があり、その設定値の一つがこのMATCH定数です。具体的には、動作モードとしてRecursiveRegexIterator::MATCHを指定すると、イテレータが処理する現在の要素が正規表現パターンにマッチした場合にのみ、その要素そのものを結果として返します。これは、正規表現をフィルターとして用い、条件に一致したデータだけを選択するという、最も基本的なフィルタリング処理を指示するモードです。このMATCH定数はデフォルトの動作モードでもあるため、もしモード指定を省略してRecursiveRegexIteratorのインスタンスを生成した場合は、このモードが自動的に適用されます。

構文(syntax)

1<?php
2
3$filePaths = [
4    'image.jpg',
5    'document.pdf',
6    'archive.zip',
7    'photo.jpg',
8    'script.php',
9    'data' => [
10        'backup.zip',
11        'log.txt',
12        'old_photo.jpg'
13    ]
14];
15
16$arrayIterator = new RecursiveArrayIterator($filePaths);
17
18$regexIterator = new RecursiveRegexIterator(
19    $arrayIterator,
20    '/\.(jpg|zip)$/',
21    RecursiveRegexIterator::MATCH
22);
23
24$iterator = new RecursiveIteratorIterator($regexIterator);
25
26foreach ($iterator as $path) {
27    echo $path . PHP_EOL;
28}
29
30?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

int

RecursiveRegexIterator::MATCH は、正規表現にマッチした要素を返すための定数です。