English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP基本教程

PHP上級教程

PHP & MySQL

PHPリファレンスマニュアル

PHP preg_replace_callback()関数の使い方と例

PHP 正規表現 (PCRE)

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

文法

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

この関数の動作は、callback を指定して replacement に代わりに文字列の計算を行う以外、preg_replace() と同じです。

パラメータの説明:

  • $pattern: 検索するパターンです。文字列または文字列の配列で指定できます。

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

  • $subject: 検索および置換する対象の文字列または文字列の配列です。

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

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

返り値

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

マッチが見つかった場合、置換後のターゲット文字列(または文字列の配列)を返します。他の場合、subject は変更されずに返されます。

オンラインの例

<?php
// テキストの年を一歳増やします.
$text = "エイプリルフールの日は 04/01/2002\n";
$text.= "去年のクリスマスは 12/24/2001\n";
// コールバック関数
function next_year($matches)
{
  // 通常: $matches[0]は完全なマッチです
  // $matches[1]は最初のキャプチャグループのマッチです
  // これらのように続きます
  return $matches[1].($matches[2]+1);
}
echo preg_replace_callback(
            "|(?\d{2}/\d{2}/)(\d{4})|",
            "next_year",
            $text);
?>

実行結果は以下の通りです:

エイプリルフールの日は 04/01/2003
去年のクリスマスは 12/24/2002

PHP 正規表現 (PCRE)