パラメーター
① mixed $pattern
検索を行うパターン。文字列や配列で。
② mixed $replace
置換を行う文字列もしくは文字列の配列。
③ mixed $src
検索・置換対象となる文字列・文字列の配列
$src が配列の場合、検索・置換は $src の各要素に行われ、返り値も配列となる。
④ int $limit
置換を行う最大回数。
デフォルトは -1 (制限無し)。
⑤ int $count
置換回数。
返り値
*引数 文字列または、配列($src が配列の場合)。
パターンがマッチした場合 :置換結果。
マッチしなかった場合 : ③引数の $src 。
エラーが発生した場合 : NULL。
マッチした文字列を参照する
$ret = preg_replace('/(d+) (d+) (d+)/i', '${2}', '123 456 789') ;
print "$ret" ;
456
プログラムの意味
'123 456 789' という文字列から '456' の部分を抜き出すために、
'/(d+) (d+) (d+)/i' で正規表現でマッチングさせた場合、
${1} が '123'、${2} が'456'、${3} が'789' となるため
$replace の部分には ${2} と指定します。
参考プログラム
$ret = preg_replace('/(d+) (d+) (d+)/i', '抜き出した数値は ${2} です。', '123 456 789') ;
print "$ret" ;
抜き出した数値は 456 です。
\1と$1と${1}
$ret = preg_replace('/(d+) (d+) (d+)/i',
'\2', '123 456 789') ;
$ret = preg_replace('/(d+) (d+) (d+)/i',
'$2', '123 456 789') ;
$ret = preg_replace('/(d+) (d+) (d+)/i',
'${2}', '123 456 789') ;
いずれの $ret もすべて
456
${1}形式はPHP4.0.4移行で用いる事ができ、推奨されています。
$1形式の場合、$11が 「$1」なのか「$1と1」なのか混乱をきたす問題点があります。
\1形式は、結果は同様ですが、PHP 4.0.4 以降では推奨されていません。