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
コメント