PHP 文字列の置換
文字列の置換は実際にあんまり使わないですが、基盤・共通やフレームワークなどの世界には、汎用性のために、よく変われるかと思います。
よく使うシーンとしては、メッセージやメールテンプレートの中に、事前に決められた特殊記号を変数の値に置換することと思います。
PHP言語においては、str_replace関数を提供してあります。
Contents
■文法
str_replace( ‘置換される文字列または配列’, ‘置換文字列または配列’, ‘検索される文字列または配列’ [, オプション:置換された数の変数] );
■返り値
置換後の文字列あるいは配列を返します。
■例1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php $search = "{0}"; // 置換される文字列 $replace = "氏名"; // 置換文字列 $subject = "{0}欄の入力値が間違いました"; // 検索される文字列 $rs = str_replace($search, $replace, $subject ); echo $rs; // 置換後の文字列:氏名欄の入力値が間違いました ?> |
凄く簡単ですね。上記の例を少し整理し、関数化したら、実際のプロジェクトの共通関数になるかと思います。
■例2:配列の場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php $search = array("{0}","{1}"); // 置換される文字列 $replace = array("1", "氏名"); // 置換文字列 $subject = "{0}行目の{1}欄の入力値が間違いました"; // 検索される文字列 $rs = str_replace($search, $replace, $subject ); echo $rs; // 置換後の文字列:1行目の氏名欄の入力値が間違いました ?> |
上記の例も実際のプロジェクトによく使われますね。必要なものを配列に纏めておいて、一発で置換することは筆者が大好きですね~~~
これだけではなく、配列を上手く利用して、実装の効率を大幅にアップできるし、シンプルなので、読みやすいと思います。極端に配列の中に更に配列を入れて実装するのは、読みにくいし、あとから来た方は読めないと思います。余談ですが、4段くらいの配列を使って、グルグルループして、実装したソースを実際に見たことありますが、よくよく読んだら、どう~見ても、実装者本人もわけがわからなくて、最後諦めて、一部の処理は別途で実装しました。(大笑い)
本題に戻りまして、筆者も使ったことがないですが、オプション:置換された数の変数を使ってサンプルソースを書きます。
■例3:オプションを使う
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php $search = array("{0}","{1}"); // 置換される文字列 $replace = array("1", "氏名"); // 置換文字列 $subject = "{0}行目の{1}欄の入力値が間違いました"; // 検索される文字列 $rs = str_replace($search, $replace, $subject, $count ); echo $rs; // 置換後の文字列:1行目の氏名欄の入力値が間違いました echo $count; // 2箇所置換されましたので、結果は2です ?> |
どういう場合使うのは、よくわからないですね。エディターツール(機能)を実現したい時に、使われるかと思います。