preg_replace

preg_replace -- 正規表現検索および置換を行う

説明

mixed preg_replace(mixed pattern, mixed replacement, mixed subject);

subject に関して pattern を用いて検索を行い、 replacement に置換します。

replacement では、 \\n 形式で 参照を指定することができます。 各参照は、n 番目の括弧で括られたパターンに マッチしたテキストにより置換されます。 n は0から99までとすることができ、 \\0 はパターン全体にマッチするテキストを 参照します。 マッチしたサブパターンの番号を得るために 左括弧は(1から始まって)左から右に番号がふられます。

subject のおいてマッチしなかった場合、 変更されずに返されます。

preg_replace に渡す全てのパラメータは配列とする ことができます。

subject が配列の場合、検索及び置換は subject の各エントリ毎に行われ、 返り値も配列として返されます。

pattern および replacement が配列の場合、 preg_replace は各配列からの値を用いて subject に関する検索および置換を行います。 replacement の値が pattern よりも少ない場合、残りの置換用文字列 に関して空の文字列が使用されます。 パターン patternが配列で replacement が文字列の場合、この置換文字列 は pattern の各値毎に使用されます。 しかし、逆の場合は意味がありません。

/e 修正子は、 preg_replacereplacement パラメータを適当な置換を 行った後、PHP コードとして処理するようにします。 注意: replacement が有効なPHPコード文字列から 構成されるようにしてください。そうでない場合、 preg_replace のある行で PHP は構文エラーを発生します。

注意: この修正子は PHP 4.0 で追加されました。

例 1. 複数の値を置換する


$patterns = array("/(19|20\d{2})-(\d{1,2})-(\d{1,2})/", "/^\s*{(\w+)}\s*=/");
$replace = array("\\3/\\4/\\1", "$\\1 =");
print preg_replace($patterns, $replace, "{startDate} = 1999-5-27");
      
この例の出力は次のようになります。

      $startDate = 5/27/1999
     

例 2. /e 修正子の使用法


preg_replace("/(<\/?)(\w+)([^>]*>)/e", "'\\1'.strtoupper('\\2').'\\3'", $html_body);
      

入力テキストの全てのHTMLタグを大文字に変換します。

preg_match, preg_match_all, preg_split も参照下さい。