【PHP8.x】PREG_UNMATCHED_AS_NULL定数の使い方
PREG_UNMATCHED_AS_NULL定数の使い方について、初心者にもわかりやすく解説します。
基本的な使い方
PREG_UNMATCHED_AS_NULL定数は、PHPの正規表現関連関数において、マッチング結果の挙動を制御するためのフラグ定数です。
この定数は、preg_matchやpreg_match_allのような正規表現関数にオプションとして渡すことで、正規表現パターン内で定義されたキャプチャグループ(サブパターン)が、入力文字列の特定の部分にマッチしなかった場合の処理方法を変更します。
通常、正規表現のマッチングでは、キャプチャグループがマッチしなかった場合、その結果は空文字列('')として返されるか、あるいは結果配列にその要素自体が存在しないことがあります。しかし、PREG_UNMATCHED_AS_NULL定数を指定すると、正規表現のマッチング処理後、マッチしなかったすべてのキャプチャグループは、結果配列内で明示的にnullとして設定されるようになります。
この挙動は、特にオプショナルなグループ(例: (pattern)?)や、選択肢のあるグループ(例: (patternA|patternB))を含む複雑な正規表現を扱う際に非常に役立ちます。結果配列にnullが含まれることで、どの部分が具体的にマッチしなかったのかを明確に判別でき、その後のプログラムでの条件分岐やデータの取り扱いが直感的かつ堅牢になります。これにより、マッチ結果の解釈が容易になり、より安定したコードを記述することが可能になります。
構文(syntax)
1<?php 2$subject = "apple banana orange"; 3$pattern = "/(apple) (banana)? (orange)/"; 4$matches = []; 5 6preg_match($pattern, $subject, $matches, PREG_UNMATCHED_AS_NULL); 7?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
int
PREG_UNMATCHED_AS_NULL は、正規表現関数 preg_match_all において、マッチしなかった部分を null として返すように指示するための定数です。この定数を指定すると、キャプチャグループにマッチする部分がなかった場合に、その要素が null で表現されます。