PHP | str_replace()で複数の条件を指定して置き換える方法

2022-03-17PHP 文字列,PHP

PHP | str_replace()で複数の条件を指定して置き換える方法

PHPのstr_replace()関数を使って複数の条件を指定する方法とサンプルコードを紹介しています。

str_replace()で文字列を置き換える

str_replace()は対象文字列そのものは変更されず処理結果を返します。

str_replace(置き換える文字列, 置き換え後の文字列, 対象の文字列);

str_replace()で条件をひとつだけ指定する場合の基本サンプルコードです。

$nnew_text = str_replace('ONE', 'TWO', 'ONE NOTE');

変数で記述した場合は以下のようなPHPコードになります。

$new_text = str_replace($target, $replace, $text);

str_replace()で複数の条件で文字列を置き換える

複数の文字列を対象に置き換える方法です。

str_replace()では正規表現は利用できません。
代わりに正規表現を使うのであれば正規表現が利用可能なpreg_replace()を利用する方法があります。

配列を利用して複数指定する

またstr_replace()でも配列にて複数の文字列を対象とする事が可能です。

$text = 'ONE NOTES';
$target = array('ONE', 'NOTES');
$new_text = str_replace($target, 'TWO', $text);

上記サンプルコードの場合、「ONE」「NOTES」「TWO」に置き換えられるので変数$new_textには「TWO TWO」が代入されます。

置き換え前と置き換え後の文字列も複数指定して置き換える

str_replace()は第二引数の置き換え後の文字列にも配列を指定可能です。
この場合の動作は、第一引数で指定した置き換え前の文字列の配列の順番と同列で置き換え処理が行われます。

例えば、置き換え前の文字列を指定した配列の2番目の文字列は置き換え後の配列内にある2番目の文字列に置き換えられます。

PHP

$text = 'ONE NOTES';
$target = array('ONE', 'NOTES');
$replace = array('TWO', 'BOX');
$new_text = str_replace($target, $replace, $text);

上記の場合、ONEはTWOに置き換えられ、NOTEはBOXに置き換えられます。

上記サンプルコードの場合、「ONE」「TWO」に、「NOTES」「BOX」に置き換えられるので変数$new_textには「TWO BOX」が代入されます。

数が増えてくると、わかりにくくなってくるので先に連想配列でセットしておく方法もあります。

$text = 'ONE NOTE';

$data = array(
	'ONE' => 'TWO',
	'NOTES' => 'BOX'
);

$target = array_keys($data);
$replace = array_values($data);

$new_text = str_replace($target, $replace, $text);

array_keys()で連想配列のキー名から新しく配列を作成して、array_values()で連想配列の値から新しく配列を作成します。

置き換える条件を関連付けて一気に変換できるので、文字列の編集では便利な使い方になりますね。

PHP 文字列,PHP

Posted by Yousuke.U