subject
に関して
pattern
を用いて検索を行い、
replacement
に置換します。
pattern
検索を行うパターン。文字列もしくは配列とすることができます。
e 修飾子を設定すると、preg_replace()
は、参照先の対応する置換を行う際に replacement
引数を PHP コードであるとして取り扱います。
replacement
には有効な PHP コードを記述してください。
さもないと、preg_replace() がある行でパースエラーが
発生してしまいます。
replacement
置換を行う文字列もしくは文字列の配列。
この引数が文字列で、pattern
引数が配列の場合、
すべてのパターンがこの文字列に置換されます。
pattern
および replacement
のいずれもが配列の場合、各 pattern
は
対応する replacement
に置換されます。
もし、replacement
配列の要素の数が pattern
配列よりも少ない場合は、余った pattern
は
空文字に置換されます。
replacement
では、
\\n 形式または
$n
形式(PHP 4.0.4 以降)で参照を指定することができます。
後者の形式の方が好ましい形式です。各参照は、n
番目のキャプチャ用サブパターンにマッチしたテキストにより置換されます。
n は 0 から 99 までとすることができ、
\\0 または $0 は
パターン全体にマッチするテキストを参照します。キャプチャ用サブパターンの番号
については、その左括弧が左から右に(1から)カウントされます。
後方参照の直後に他の数字が続くような置換 (replacement) パターンを 使用する場合(すなわち、マッチしたパターンの直後に数字リテラルを置く 場合)、後方参照を行うために通常の \\1 表記を 使用することができません。例えば、\\11 は、 後方参照 \\1 の後にリテラル 1 が続くのか、後方参照 \\11 で その後には何も続かないのかが不明のため、 preg_replace() を混乱させる可能性があります。 この場合、解決策は、\${1}1 を使用することです。 こうすることで、1 はリテラルとなり、後方参照 $1 を明確に作成できます。
e 修飾子を使用する際に、 この関数は後方参照を置換する文字列のうちの特定の文字 (具体的には '、"、 \ および NULL) をエスケープします。 これは、後方参照をシングルクォートやダブルクォートを共用した場合 (たとえば 'strlen(\'$1\')+strlen("$2")') に構文エラーが発生しないようにするためのものです。 PHP の 文字列構文 を意識し、 文字列がどのように解釈されるのかを正確に知っておくようにしましょう。
subject
検索・置換対象となる文字列もしくは文字列の配列
subject
が配列の場合、検索と置換は
subject
の各要素に対して行われ、返り値も配列となります。
limit
subject
文字列において、各パターンによる
置換を行う最大回数。デフォルトは
-1 (制限無し)。
count
この引数が指定されると、置換回数が渡されます。
preg_replace() は、
subject
引数が配列の場合は配列を、
その他の場合は文字列を返します。
パターンがマッチした場合、〔置換が行われた〕新しい subject
が返されます。マッチしなかった場合、subject
が
そのまま返されます。
注意:
pattern
およびreplacement
を使用する際、配列の並び順に処理されます。添字は整数であっても、 その並びは値の小さい順になっているとは限りません。 ですから、配列の添字を使って、どのpattern
が、どのreplacement
に置換されるかを指定しようとする場合は、 preg_replace() をコールする前に、各配列に対し ksort() を実行しておくべきです。