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となりますので結果的に
- ソースコードの可読性が良くなる。
- 後のメンテナンスがしやすくなります。
以上です。