PHPプログラミング

レシピ

文字列

検索に一致した文字列を置換する

正規表現を使って文字列の検索を行い、ヒットした部分を指定した文字列に差し替える方法を解説します。

この記事のポイント

  • 文字列の中の特定の文字を置換したい
  • 置換の最大回数を指定する

目次

基本編

ある文字列に対し、特定の文字だけを検索して置き換えたいことがあると思います。
そんな時はpreg_replace関数が便利です。

この関数は正規表現を使って文字列の検索を行い、ヒットした部分を任意の文字列へ置き換えを行います。

preg_replace関数の解説

前から3つのパラメータは必須です。
しかし、4つ目の置換の最大回数の指定、5つ目の置換回数を格納するための変数を渡す部分は任意です。

正規表現の基本的な使い方については「文字列に特定の文字(単語)が含まれるか検索」をご覧ください。

まずはシンプルに、文字列に半角スペースが入っていたら「,(半角コンマ)」へ置換してみましょう。

コード例

// 変数の初期化
$res = null;
$str = 'dog cat fox mouse';

// 置換前の文字列
var_dump($str);

$str = preg_replace( '/ /', ',', $str);

// 置換後の文字列
var_dump($str);

実行結果の出力内容

// 置換前の文字列
string(17) "dog cat fox mouse"

// 置換後の文字列
string(17) "dog,cat,fox,mouse"

解説

3つ目のパラメータで渡した$strに入っている文字列を対象にして、1つ目のパラメータで指定した文字列の検索を行なっています。
そこでヒットしたら、2つ目のパラメータで指定した文字列へ置換を行う、という流れです。

この関数は文字列が終わるまで検索と置換を繰り返すので、該当する全ての文字列を置換することができます。

置換の最大回数と置換回数を取得

続いて、preg_replace関数の4つ目と5つ目のパラメータを使ってみましょう。

コード例

// 変数の初期化
$count = 0;
$str = 'dog cat fox mouse';

// 置換前の文字列
var_dump($str);

$str = preg_replace( '/ /', ',', $str, 2, $count);

// 置換後の文字列
var_dump($str);

// 置換回数
var_dump($count);

実行結果の出力内容

// 置換前の文字列
string(17) "dog cat fox mouse"

// 置換後の文字列
string(17) "dog,cat,fox mouse"

// 置換回数
int(2)

解説

4つ目のパラメータに置換の上限回数を指定し、5つ目のパラメータに置換回数を格納する$countを渡しています。

今回は上限回数を「2」と指定しているので、文字列全体では3件以上ヒットしていたとしても、先頭から順に2回までの置換を行って終了します。
上限回数を無制限にしたい場合は「-1」を指定します。

そして、実際に置換が行われた回数が$countへカウントされて行きます。
var_dump関数で出力した結果、今回は置換が2回行われたことが分かります。

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

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

ありがとうございます。
コメントを送信しました。