【PHP8.x】setModeメソッドの使い方

setModeメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

『setModeメソッドは、RegexIteratorオブジェクトの操作モードを設定するメソッドです』 このメソッドを使用することで、イテレータが正規表現に一致した要素を発見した際に、その要素をどのような形式で返すかを動的に変更できます。RegexIteratorの動作は、コンストラクタでも指定可能ですが、このメソッドを用いることでオブジェクト生成後に振る舞いを切り替えることが可能になります。引数には、動作モードを指定するための定数を渡します。例えば、RegexIterator::GET_MATCHを指定すると、正規表現に一致した部分文字列の配列が返されます。これがデフォルトの動作です。RegexIterator::SPLITを指定すれば、一致した部分を区切り文字として文字列を分割した結果の配列を取得できます。また、RegexIterator::REPLACEを指定すると、一致した部分を置換した後の文字列を返すように設定できます。このメソッドは返り値を返さず、オブジェクト内部のモード設定を変更する目的で使用されます。正規表現を用いた繰り返し処理において、状況に応じて柔軟なデータ形式を取得したい場合に非常に役立ちます。

構文(syntax)

1<?php
2
3// 元となるデータを持つイテレータ
4$data = new ArrayIterator(['test1', 'test2', 'skip3', 'test4']);
5
6// 正規表現にマッチする要素を扱うイテレータを作成
7$regexIterator = new RegexIterator($data, '/test(\d)/');
8
9/**
10 * public RegexIterator::setMode(int $mode): void
11 *
12 * イテレータの動作モードを設定します。
13 * RegexIterator::GET_MATCH を指定すると、
14 * マッチした部分文字列が配列で返されるようになります。
15 *
16 * デフォルトのモード (RegexIterator::MATCH) では、
17 * マッチした要素全体 ('test1', 'test2', 'test4') が返されます。
18 */
19$regexIterator->setMode(RegexIterator::GET_MATCH);
20
21// 結果をイテレートして出力
22foreach ($regexIterator as $match) {
23    // $match は [マッチ全体, キャプチャグループ1, ...] の形式の配列
24    print_r($match);
25}
26
27?>

引数(parameters)

int $mode

  • int $mode: 正規表現の比較モードを指定する整数

戻り値(return)

戻り値なし

戻り値はありません

【PHP8.x】setModeメソッドの使い方 | いっしー@Webエンジニア