【PHP8.x】setFlagsメソッドの使い方
setFlagsメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
『setFlagsメソッドは、RecursiveRegexIteratorオブジェクトの動作モードを制御するフラグを設定するために使用するメソッドです。このメソッドを利用することで、正規表現にマッチした要素をどのように処理し、どのような形式で値を取得するかを、イテレータのインスタンスを生成した後に動的に変更できます。設定できるフラグにはいくつかの種類があります。例えば、デフォルトの動作であるRegexIterator::MATCHは、正規表現にマッチした要素の値をそのまま返します。RegexIterator::GET_MATCHを指定すると、マッチした部分文字列そのものを取得できます。また、RegexIterator::SPLITはマッチした箇所で文字列を分割した結果を配列として返し、RegexIterator::REPLACEはマッチした部分を置換した文字列を返します。REPLACEフラグを使用する場合は、あらかじめreplacementプロパティに置換後の文字列を設定しておく必要があります。このメソッドは、同じイテレータオブジェクトを使いながら、処理の要件に応じて結果の取得方法を柔軟に切り替えたい場合に非常に便利です。
構文(syntax)
1<?php 2// 再帰的なイテレータを作成します 3$directoryIterator = new RecursiveDirectoryIterator('.'); 4$recursiveIterator = new RecursiveIteratorIterator($directoryIterator); 5 6// 正規表現でフィルタリングするイテレータを作成します 7// この時点では、'.git' ディレクトリを含むすべてのパスにマッチします 8$regexIterator = new RecursiveRegexIterator($recursiveIterator, '/^.+\.git$/'); 9 10// フラグを設定して、マッチングの挙動を変更します 11// RegexIterator::INVERT_MATCH はマッチング結果を反転させるため、'.git' を含むパス"以外"にマッチするようになります 12$regexIterator->setFlags(RegexIterator::INVERT_MATCH); 13 14// 結果を10件だけ表示します 15$limitIterator = new LimitIterator($regexIterator, 0, 10); 16 17foreach ($limitIterator as $file) { 18 echo $file->getPathname() . PHP_EOL; 19}
引数(parameters)
int $flags
- int $flags: 正規表現の検索方法を制御するフラグを指定する整数
戻り値(return)
戻り値なし
戻り値はありません