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

PHP

str_replace()は文字列の置き換えができるPHP関数ですが、str_replace()を使って複数の条件を指定する方法になります。

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

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

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

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

PHP

$new = str_replace('ONE', 'TWO', 'ONE NOTE');
echo $new;

変数で記述した場合

PHP

$text = 'ONE NOTE';
$target = 'ONE';
$replace = 'TWO';
$new = str_replace($target, $replace, $text);
echo $new;

表示結果

TWO NOTE

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

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

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

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

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

PHP

$text = 'ONE NOTE';
$target = array('ONE','NOT');
$replace = 'TWO';
$new = str_replace($target, $replace, $text);
echo $new;

こうした場合、ONEもNOTEもTWOに置き換えられるので表示結果は以下の様になります。

表示結果

TWO TWO

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

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

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

PHP

$text = 'ONE NOTE';
$target = array('ONE','NOTE');
$replace = array('TWO','BOX');
$new = str_replace($target, $replace, $text);
echo $new;

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

表示結果

TWO BOX

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

PHP

$text = 'ONE NOTE';

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

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

$replace = array('TWO','BOX');
$new = str_replace($target, $replace, $text);
echo $new;

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

表示結果

TWO BOX

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

PHP文字列

Posted by Yousuke.U