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

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

作成日: 更新日:

基本的な使い方

『ALL_MATCHES定数は、RegexIteratorクラスの動作モードを指定するための定数です。この定数をRegexIteratorのコンストラクタの第3引数に設定すると、イテレータが処理する各要素に対して正規表現検索を行い、一致したすべての部分を配列として返します。これは、PHPの標準関数であるpreg_match_all()と同様の動作となり、マッチした結果が多次元配列の形式で得られます。例えば、一つの文章の中から複数のURLやメールアドレスをすべて抽出したい場合にこのモードは非常に役立ちます。デフォルトの動作では正規表現にマッチした要素全体が返されますが、ALL_MATCHESモードを使用することで、要素の中からパターンに一致した箇所だけを正確に、そして一度にすべて取得することが可能になります。これにより、複雑な文字列データから必要な情報を効率的に抜き出す処理を簡潔に記述できます。』

構文(syntax)

1<?php
2
3$lines = new ArrayIterator([
4    'Error on line 10, Warning on line 25',
5    'Notice on line 30',
6    'No issues here',
7    'Fatal error on line 45'
8]);
9
10$iterator = new RegexIterator(
11    $lines,
12    '/(\w+) on line (\d+)/',
13    RegexIterator::ALL_MATCHES
14);
15
16foreach ($iterator as $lineKey => $matches) {
17    echo "Matches found in original line {$lineKey}:" . PHP_EOL;
18    // $matches[0] は全体にマッチした文字列の配列
19    // $matches[1] は1番目のキャプチャグループの配列 (Error, Warningなど)
20    // $matches[2] は2番目のキャプチャグループの配列 (10, 25など)
21    print_r($matches);
22}
23
24?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

【PHP8.x】ALL_MATCHES定数の使い方 | いっしー@Webエンジニア