PHP preg_replace_callback() 関数

PHP 正则表达式(PCRE)PHP 正規表現 (PCRE)

preg_replace_callback 関数は正規表現検索を実行し、コールバックを使用して置換を行います。

構文

mixed preg_replace_callback ( mixed $pattern , callable $callback , mixed $subject [, int $limit = -1 [, int &$count ]] )

この関数の動作は、置換文字列の計算に replacement の代わりに callback を指定できる点を除いて、preg_replace() と同じです。

パラメータの説明:

  • $pattern: 検索するパターンで、文字列または文字列の配列を使用できます。

  • $callback: コールバック関数で、置換が必要なたびに呼び出されます。呼び出し時に受け取る引数は、subject からマッチした結果です。

  • $subject: 検索して置換する対象の文字列または文字列の配列。

  • $limit: オプション。各パターンについて、各 subject 文字列に対する置換の最大回数です。デフォルトは -1(無制限)です。

  • $count: オプション。置換が実行された回数です。

戻り値

subject が配列の場合、preg_replace_callback() は配列を返し、それ以外の場合は文字列を返します。エラーが発生した場合は NULL を返します。

マッチが見つかった場合は、置換後の対象文字列(または文字列の配列)を返します。それ以外の場合は subject が変更されずに返されます。

例

例 1

<?php //テキスト内の年を1年増やします。 $text = "April fools day is 04/01/2002\n"; $text.= "Last christmas was 12/24/2001\n"; //コールバック関数 function next_year($matches) { //通常: $matches //$matches //以下同様です return $matches[1].($matches[2]+1); } echo preg_replace_callback( "|(\d{2}/\d{2}/)(\d{4})|", "next_year", $text); ?>

実行結果は次のとおりです:

April fools day is 04/01/2003
Last christmas was 12/24/2002

PHP 正则表达式(PCRE)PHP 正規表現 (PCRE)

その他の拡張