PHPプログラミング

レシピ

文字列

検索に一致した文字列を置換する:preg_replace関数

preg_replace関数を使って、正規表現による検索でヒット部分を任意の文字列に差し替える方法について解説します。

この記事のポイント

  • 文字列にある特定の文字を置換する
  • 置換する最大回数は指定できる
  • 実際に置換回数を取得できる

特定の文字を検索して置換する

preg_replace関数は正規表現による文字列検索を行い、ヒットした部分を指定した文字に置き換えることができる関数です。

コード例

preg_replace( '/cat/', 'dog' $str, 5, $count);

1つ目のパラメータ「cat」は正規表現の検索条件、2つ目の「dog」は置き換える文字列です。
3つ目のパラメータ$strは検索の対象となる文字列です。
つまり、上記の指定では「$strから“cat”を検索して、見つかったら“dog”に置き換える」という指定になります。

続く2つのパラメータは任意で指定します。
4つ目のパラメータ「5」は置き換える最大回数、5つ目の変数$countには置き換えた回数が入ります。

正規表現ではpreg_match関数がよく使われますが、この関数に文字列を差し替える機能がついたものになります。
正規表現による検索については共通のため、検索方法の基礎については別記事「文字列に特定の文字(単語)が含まれるか検索」をご覧ください。

それでは、もう少し実用的なコードで具体的な動きを解説していきます。

コード例

// 検索対象となる文字列
$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」と表示されます。

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

コメントありがとうございます!
運営の参考にさせていただきます。