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

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

作成日: 更新日:

基本的な使い方

INVERT_MATCH定数は、RecursiveRegexIteratorクラスの動作モードを指定するためのフラグを表す定数です。RecursiveRegexIteratorは、再帰的なイテレータを走査し、各要素に対して正規表現によるマッチングを行います。通常、このクラスは指定した正規表現にマッチした要素のみを結果として返します。しかし、INVERT_MATCH定数をモードとして設定すると、この動作が反転します。具体的には、正規表現にマッチしなかった要素のみを返すようになります。この機能は、特定のパターンを持つ要素を結果から除外したい場合に非常に有効です。例えば、ファイル群の中から特定の拡張子を持つファイル(例: .tmp)以外のすべてのファイルを取得したい場合などに利用できます。この定数は、RecursiveRegexIteratorのコンストラクタの第3引数やsetMode()メソッドで指定することで、フィルタリングの条件を簡単に反転させることが可能です。

構文(syntax)

1<?php
2
3$filePaths = new RecursiveArrayIterator([
4    'index.php',
5    'image.png',
6    'style.css',
7    'src' => [
8        'app.php',
9        'config.json'
10    ]
11]);
12
13// '.php' で終わらない要素のみをフィルタリングするイテレータを作成します。
14$iterator = new RecursiveRegexIterator(
15    $filePaths,
16    '/\.php$/',
17    RecursiveRegexIterator::MATCH,
18    RecursiveRegexIterator::INVERT_MATCH // このフラグでマッチングの挙動を反転させます
19);
20
21// 結果を再帰的にたどって表示します
22foreach (new RecursiveIteratorIterator($iterator) as $path) {
23    echo $path . PHP_EOL;
24}
25
26?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

int

RecursiveRegexIterator::INVERT_MATCHは、正規表現にマッチしない要素を検索するための定数です。この定数は、通常、RecursiveRegexIterator::getMode() メソッドと組み合わせて使用され、反転したマッチングモードを指定するために整数値 2 を返します。