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. 複数の値を置換する
$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 も参照下さい。