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_replace()replacement パラメータを適当な置換を 行った後、PHP コードとして処理するようにします。 注意: replacement が有効なPHPコード文字列から 構成されるようにしてください。そうでない場合、 preg_replace() のある行で PHP は構文エラーを発生します。

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

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

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

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

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

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

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