preg_replace_callback_array

(PHP 7, PHP 8)

preg_replace_callback_array正規表現検索を行い、コールバック関数を使用して置換を行う

説明

preg_replace_callback_array(
    array $pattern,
    string|array $subject,
    int $limit = -1,
    int &$count = null,
    int $flags = 0
): string|array|null

この関数の動作は、preg_replace_callback() に似ていますが、 コールバック関数が、パターン単位ペースで実行されるところが異なります。

パラメータ

pattern

パターンをキーとし、callable を値とする連想配列です。

subject

文字列あるいは文字列の配列で、 検索および置換の対象となる文字列を指定します。

limit

subject 文字列における 各パターンの最大置換回数。デフォルトは -1 (無制限) です。

count

指定した場合は、置換を行った回数がここに格納されます。

flags

flags には、 PREG_OFFSET_CAPTUREPREG_UNMATCHED_AS_NULL の組み合わせが指定できます。 これは matches 配列のフォーマットに影響します。 詳細は preg_match() 関数の説明を参照してください。

戻り値

preg_replace_callback_array() は、 subject が配列の場合には配列を、 それ以外の場合は文字列を返します。 エラー時の戻り値は null となります。

マッチするものが見つかった場合は新しい subject を返し、それ以外の場合はもとの subject をそのまま返します。

エラー / 例外

渡された正規表現のパターンがコンパイルできない場合、E_WARNING が発生します。

変更履歴

バージョン 説明
7.4.0 パラメータ flags が追加されました。

例1 preg_replace_callback_array() の例

<?php
$subject 
'Aaaaaa Bbb';

preg_replace_callback_array(
    [
        
'~[a]+~i' => function ($match) {
            echo 
strlen($match[0]), ' matches for "a" found'PHP_EOL;
        },
        
'~[b]+~i' => function ($match) {
            echo 
strlen($match[0]), ' matches for "b" found'PHP_EOL;
        }
    ],
    
$subject
);
?>

上の例の出力は以下となります。

6 matches for "a" found
3 matches for "b" found

参考

関連キーワード:  preg, 置換, 関数, 検索, replace, array, callback, subject, 使用, パターン