PHPのstr_replace関数の使い方!(文字列を置換する)

PHP

PHPで文字列を置換するstr_replace関数の使い方と、サンプルコードを載せています。
サンプルコードはPHP8で検証しています。

str_replace関数の使い方

str_replaceは「対象の文字列から、置換したい文字列を検索して、置換した内容を返す」という関数です。
str_replaceを使うときには、第1引数に探したい値、第2引数に置換したい値、第3引数に対象の文字列を指定します。

例えば、下記のように使用します。

<?php
$search = 'りんご';
$replace = 'ぶどう';
$target = 'りんごが5個あります。';
echo str_replace($search, $replace, $target); // 結果「ぶどうが5個あります。」

文字列を置換する対象($target)「りんごが5個あります。」を検索文字列($search)で検索して、存在する文字を置換文字列($replace)で置換しています。
結果として、「ぶどうが5個あります。」が出力されます。

複数文字がある場合も全て置換してくれます。
先ほどのコードを少し変更してみました。対象の文字列に「りんご」が複数含まれています。

<?php
$search = 'りんご';
$replace = 'ぶどう';
$target = 'りんごとりんごそしてりんご';
echo str_replace($search, $replace, $target); // 結果「ぶどうとぶどうそしてぶどう」

対象の文字列から見つかった全ての「りんご」が「ぶどう」に置換されます。
結果として、「ぶどうとぶどうそしてぶどう」が出力されます。

関数の公式ドキュメントはこちらです。

複数の文字列を対象を置換したい

複数の対象文字列を指定して、置換することもできます。
検索文字列と置換文字列を配列定義にすると、対象文字列の複数箇所を置換することが可能です。

<?php
$search = ['サラダ', '焼き魚'];
$replace = ['寿司', 'ラーメン'];
$target = '好きな食べ物はサラダと焼き魚です。';
echo str_replace($search, $replace, $target); // 結果「好きな食べ物は寿司とラーメンです。」

検索文字列($search)と置換文字列($replace)を配列にしました。
検索文字列($search)の配列にある要素を対象文字列($target)から探して、置換文字列($replace)の配列の要素で置換します。

置換される順番は、配列の要素の順番になります。
「サラダ」が「寿司」に変換されて、「焼き魚」が「ラーメン」に変わります。
結果として「好きな食べ物は寿司とラーメンです。」となります。

複数の対象文字列を置換する

対象文字列を配列にすると、複数を対象にして変換することができます。
例えば、対象を下記のように増やしてみます。

<?php
$search = ['サラダ', '焼き魚'];
$replace = ['寿司', 'ラーメン'];
$target = ['好きな食べ物はサラダと焼き魚です。', 'サラダ焼き魚サラダ焼き魚', 'サラダが焼き魚で焼き魚がサラダ'];
var_dump(str_replace($search, $replace, $target));

そうすると、対象の文字列が入っている配列の中身が全て変換されます。
返ってくる内容も配列で返ってきます。

var_dumpを使って、出力していますが、結果下記のような配列が返ってきます。

array(3) {
  [0]=>
  string(51) "好きな食べ物は寿司とラーメンです。"
  [1]=>
  string(36) "寿司ラーメン寿司ラーメン"
  [2]=>
  string(45) "寿司がラーメンでラーメンが寿司"
}

配列の対象文字列が、全て変換されて返ってきているのが確認できました。

置換回数を取得する

str_replaceは第4引数も指定することができます。
第4引数を指定すると、置換した回数を指定した変数に格納してくれます。

<?php
$search = 'りんご';
$replace = 'ぶどう';
$target = 'りんごとりんごそしてりんご';
echo str_replace($search, $replace, $target, $count) . "\n";
echo "変換回数:{$count}";

第4引数に$countという変数を指定しました。
「りんご」が「ぶどう」に3回置換されたので、$countには3という数値が入ってきます。
結果として、下記が出力されます。

ぶどうとぶどうそしてぶどう
変換回数:3

コメント

タイトルとURLをコピーしました