preg_replace
    (PHP 3 >= 3.0.9, PHP 4, PHP 5)
preg_replace -- 正規表現検索および置換を行う
説明
mixed 
preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit [, int &count]] )
   subject に関して
   pattern を用いて検索を行い、
   replacement に置換します。
  
   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 を明確に作成できます。
  
   subject が配列の場合、検索と置換は 
   subject
   の各要素に対して行われ、返り値も配列となります。
  
   e 修飾子を設定すると、preg_replace()
   は、参照先の対応する置換を行う際に replacement 
   引数を PHP コードであるとして取り扱います。
   replacement には有効な PHP コードを記述してください。
   さもないと、preg_replace() がある行でパースエラーが
   発生してしまいます。
  
パラメータ
   
- pattern
 
       検索を行うパターン。文字列もしくは配列とすることができます。
      
- replacement
 
       置換を行う文字列もしくは文字列の配列。
       この引数が文字列で、pattern 引数が配列の場合、
       すべてのパターンがこの文字列に置換されます。
       pattern および replacement
       のいずれもが配列の場合、各 pattern は
       対応する replacement に置換されます。
       もし、replacement 配列の要素の数が pattern 
       配列よりも少ない場合は、余った pattern は
       空文字に置換されます。
      
- subject
 
       検索・置換対象となる文字列もしくは文字列の配列
      
- limit
 
       subject 文字列において、各パターンによる
       置換を行う最大回数。デフォルトは
       -1 (制限無し)。
      
- count
 
       この引数が指定されると、置換回数が渡されます。
      
 
  返り値
   preg_replace() は、
   subject 引数が配列の場合は配列を、
   その他の場合は文字列を返します。
  
   パターンがマッチした場合、〔置換が行われた〕新しい subject 
   が返されます。マッチしなかった場合、subject が
   そのまま返されます。
  
例
   
例 1. 数字リテラルが後に続く後方参照 
<?php $string = 'April 15, 2003'; $pattern = '/(\w+) (\d+), (\d+)/i'; $replacement = '${1}1,$3'; echo preg_replace($pattern, $replacement, $string); ?>
 |  
 上の例の出力は以下となります。  | 
  
   
例 2. 添字配列の使用 
<?php $string = 'The quick brown fox jumped over the lazy dog.'; $patterns[0] = '/quick/'; $patterns[1] = '/brown/'; $patterns[2] = '/fox/'; $replacements[2] = 'bear'; $replacements[1] = 'black'; $replacements[0] = 'slow'; echo preg_replace($patterns, $replacements, $string); ?>
 |  
 上の例の出力は以下となります。 The bear black slow jumped over the lazy dog.  |  
 
     pattern と replacement を ksort すると、所望のものが得られます。
     
<?php ksort($patterns); ksort($replacements); echo preg_replace($patterns, $replacements, $string); ?>
 |  
 上の例の出力は以下となります。 The slow black bear jumped over the lazy dog.  |  
  | 
  
   
例 3. 複数値の置換 
<?php $patterns = array ('/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/',                    '/^\s*{(\w+)}\s*=/'); $replace = array ('\3/\4/\1\2', '$\1 ='); echo preg_replace($patterns, $replace, '{startDate} = 1999-5-27'); ?>
 |  
 上の例の出力は以下となります。  | 
  
   
例 4. 'e' 修飾子の使用 
<?php preg_replace("/(<\/?)(\w+)([^>]*>)/e",               "'\\1'.strtoupper('\\2').'\\3'",               $html_body); ?>
 |  
 
     入力テキストのすべての HTML タグを大文字に変換します。
      | 
  
   
例 5. 空白の削除 
     この例は、文字列から余分な空白を取り除きます。
     
<?php $str = 'foo   o'; $str = preg_replace('/\s\s+/', ' ', $str); // This will be 'foo o' now echo $str; ?>
 |  
  | 
  
   
例 6. count 引数の使用 
<?php $count = 0;
  echo preg_replace(array('/\d/', '/\s/'), '*', 'xp 4 to', -1 , $count); echo $count; //3 ?>
 |  
 上の例の出力は以下となります。  | 
  注意
注意: 
    pattern および replacement
    を使用する際、配列の並び順に処理されます。添字は整数であっても、
    その並びは値の小さい順になっているとは限りません。
    ですから、配列の添字を使って、どの pattern 
    が、どの replacement に置換されるかを指定しようとする場合は、
    preg_replace() をコールする前に、各配列に対し
    ksort() を実行しておくべきです。