PHP preg_replace_callback() 関数
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
//テキスト内の年を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)