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

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

作成日: 更新日:

基本的な使い方

REPLACE定数は、RecursiveRegexIteratorクラスの動作モードを「置換モード」に設定するために使用される定数です。RecursiveRegexIteratorは、再帰的なデータ構造(例えばディレクトリツリーなど)をたどりながら、各要素が指定された正規表現パターンにマッチするかを判定するクラスです。このREPLACE定数をコンストラクタの$mode引数に指定することで、イテレータのcurrent()メソッドが返す値の挙動が変わります。通常、current()は現在の要素そのものを返しますが、REPLACEモードでは、元の値に対してpreg_replace()関数による置換処理を実行した後の文字列を返します。これにより、イテレーションを行いながら、正規表現にマッチした部分を動的に置換した結果を効率的に取得できます。例えば、多くのファイル名から特定の接頭辞を削除した結果のリストを作成するような場合に役立ちます。

構文(syntax)

1<?php
2
3$data = new RecursiveArrayIterator([
4    'file_version_1.log',
5    'image.jpg',
6    'logs' => [
7        'system_debug.log',
8        'error_report.log',
9    ],
10    'data.csv'
11]);
12
13$iterator = new RecursiveIteratorIterator($data);
14
15$regexIterator = new RecursiveRegexIterator(
16    $iterator,
17    '/\.log$/',
18    RecursiveRegexIterator::REPLACE
19);
20
21$regexIterator->replacement = '.txt';
22
23foreach ($regexIterator as $item) {
24    echo $item . PHP_EOL;
25}

引数(parameters)

引数なし

引数はありません

戻り値(return)

int

RecursiveRegexIterator::REPLACE は、再帰的な正規表現イテレータがパターンにマッチした部分を置換することを指定する整数定数です。