PHP入門 文字列関数 部分文字列を置換する(str_replace関数)

文字列に含まれる特定の部分文字列を別の文字列で置き換えるには、str_replace関数を利用します。

構文:str_replace関数

str_replace(string|array $search , string|array $replace, string|array $subject
         [, int &$count]):string|array
$search置き換える部分文字列
$replace置き換える後の文字列
$subject対象の文字列
&$count置き換えた文字列の個数を格納する変数

引数&$countは処理結果を受け取るための引数です。出力を目的とした引数です。str_replace関数の結果、置き換えれた箇所の個数がここで指定した変数に格納されます。構文で、引数の頭に「&」とあるのは、引数を参照渡しすることを意味します。

<?php 
  $str = '向かい側の家はにわとりを飼っている';
  print str_replace('にわ','ニワ',$str,$cnt).'<br>';
  print "{$cnt}個の置き換えをしました。"
実行結果
実行結果

引数$search、$replace、$subjectには、それぞれ配列を渡すこともできます。

 <?php 
  $str = ['PHPは良い言語です','PHPは良いサーバー実行環境です'];
  $src = ['PHP','良い'];
  $rep = ['PHP 8','素晴らしい'];
  print_r(str_replace($src,$rep,$str,$cnt));
  print "{$cnt}個の置き換えをしました。"
実行結果
実行結果

まず、引数$subjectに配列を指定した場合、戻り値も配列となります。ただし、引数&$countにはあくまで置換箇所の「総数」がセットされます。引数$search、$replaceに配列を指定した場合、原則として両者の要素数は等しくならなければなりません。要素数が異なってもエラーにはなりませんが、$searchの要素数が$replaceの要素数よりも少ない場合、余った$replaceの内容は無視されます。逆に$search > $replaceである場合、対応する要素のない$searchの要素は空文字列で置換されます。

文字列の大文字/小文字を区別しないstr_ireplace関数もあります。構文はstr_replace関数と同じです。