特定の文字を検索して置換する
preg_replace関数は正規表現による文字列検索を行い、ヒットした部分を指定した文字に置き換えることができる関数です。
PHP コード例
preg_replace( '/cat/', 'dog' $str, 5, $count);
1つ目のパラメータ「cat」は正規表現の検索条件、2つ目の「dog」は置き換える文字列です。
3つ目のパラメータ$strは検索の対象となる文字列です。
つまり、上記の指定では「$strから"cat"を検索して、見つかったら"dog"に置き換える」という指定になります。
続く2つのパラメータは任意で指定します。
4つ目のパラメータ「5」は置き換える最大回数、5つ目の変数$countには置き換えた回数が入ります。
正規表現ではpreg_match関数がよく使われますが、この関数に文字列を差し替える機能がついたものになります。
正規表現による検索については共通のため、検索方法の基礎については別記事「文字列に特定の文字(単語)が含まれるか検索」をご覧ください。
それでは、もう少し実用的なコードで具体的な動きを解説していきます。
PHP コード例
// 検索対象となる文字列
$str1 = "cat is cat. cat play a trick. but so pretty";
// 変数の初期化
$str2 = null;
$count = 0;
// 文字列の置換
$str2 = preg_replace( '/cat/', 'dog', $str1, 2, $count);
// 結果の出力
var_dump($str1);
var_dump($str2);
var_dump($count);
出力例
string(43) "cat is cat. cat play a trick. but so pretty"
string(43) "dog is dog. cat play a trick. but so pretty"
int(2)
上記コードでは、$strの「cat」を「dog」に置き換えます。
しかし、4つ目のパラメータで「2」と指定しているので置き換える回数は2回までになっているため、「cat is cat.」は「dog is dog.」に置き換わっていますが、ここですでに2回の置換が行われているため続く「cat play a trick.」以降は置き換わりません。
そして、置換回数は5つ目のパラメータ$countに格納されるため、最後の出力で「2」と表示されます。