【PHP8.x】replacementプロパティの使い方

replacementプロパティの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

replacementプロパティは、正規表現にマッチした文字列を置換するための文字列を保持するプロパティです。このプロパティは、RecursiveRegexIteratorの動作モードがRecursiveRegexIterator::REPLACE定数によって置換モードに設定されている場合にのみ意味を持ちます。置換モードが有効な場合、イテレータが処理する各要素について、コンストラクタで指定された正規表現にマッチした部分が、このreplacementプロパティに設定された文字列で置き換えられます。この動作は、PHPの標準関数であるpreg_replace()の挙動と非常によく似ており、replacementプロパティはその第2引数である置換文字列と同じ役割を担います。したがって、preg_replace()と同様に、正規表現内のキャプチャグループ(丸括弧で囲まれた部分)にマッチした部分文字列を、$1${2}といった形式の後方参照を用いて置換後の文字列に含めることが可能です。このプロパティはpublicであるため、RecursiveRegexIteratorのインスタンスを作成した後に直接値を設定することで、置換パターンを動的に指定できます。

構文(syntax)

1<?php
2$array = ['key-1', 'key-2', 'item-3'];
3
4$arrayIterator = new RecursiveArrayIterator($array);
5$regexIterator = new RecursiveRegexIterator(
6    $arrayIterator,
7    '/key-([0-9]+)/',
8    RecursiveRegexIterator::REPLACE
9);
10
11$regexIterator->replacement = 'value-$1';
12
13foreach ($regexIterator as $value) {
14    echo $value . PHP_EOL;
15}

引数(parameters)

引数なし

引数はありません

戻り値(return)

string|null

RecursiveRegexIterator::replacementプロパティは、現在のイテレータ位置にマッチした文字列、またはマッチしなかった場合はnullを返します。