PHPで複数の文字列を置換する方法:str_replace関数

投稿日: 作成:   更新:

PHPで「str_replace関数」を使って複数の文字列を置換することができます。

同じようなパターンであれば、preg_replace()で正規表現を使い、複数文字列を置換した方が良いですが、
ある決まった文字列を置換するのであれば、str_replace()を使った方が良いです。

それでは行きましょう!

複数の文字列を置換

次のソースコードでは、「バナナ、イチゴ」を英語の「Banana、Strawberry」に置換しています。

<?php

$val= 'バナナは黄色い、イチゴは赤い。';
$search = ['バナナ', 'イチゴ'];
$replace = ['Banana', 'Strawberry'];

echo str_replace($search, $replace, $val);

?>

実行結果:

このように複数の文字列を置換することができましたが、
$searchと$replaceの配列の順番を間違えないようにしなければないので、
置換対象が増えていくと分かりづらくなります。

分かりやすくするにはどうしたら良いのか?

そんなとき、array_keys()、array_values()を使います。

array_keys、array_valuesを使って分かりやすく書く

次のソースコードでは、$mappingに変換用の連想配列を用意しておき、
array_keys()、array_values()で一律に$search、$replaceに格納しています。

<?php

$val= 'バナナは黄色い、イチゴは赤い。';

// 連想配列を使うことで、置換対象が分かりやすくなる
$mapping = [
  'バナナ' => 'Banana',
  'イチゴ' => 'Strawberry'
];

$search = array_keys($mapping);
$replace = array_values($mapping);

echo str_replace($search, $replace, $val);

?>

このようにソースコードを書いておくことで、
置換対象が増えたとしても$mapping配列の値の行を増やせばOKとなりますので結果的に

  • ソースコードの可読性が良くなる。
  • 後のメンテナンスがしやすくなります。

以上です。