今回も「文字列の置換」を紹介しますが、
str_replaceではなく、preg_replaceという関数を紹介します。
まずはサンプルプログラムをみてみましょう。
<?php $moji = "隣の竹やぶに竹立てかけたのは、竹立てかけたかったから竹立てかけたのさ"; echo preg_replace("/竹/", "梅", $moji); // 「竹」を「梅」に変換して表示
前回のstr_replace同様、「竹」を「梅」に変換することができました。
preg_replace(/検索する文字列/,置換後の文字列,置換したい文字列);
という形式で利用します。検索する文字列の前後に「/」がつくのが特徴です。
と書きましたが、実はpreg_replaceにはもっと深い意味があります。
それはpregという言葉の意味に現れています。ここでは詳しく説明しませんが、
pregとは「perlというプログラミング言語と互換性のある正規表現(regular expression)」
という言葉の略(perlのpと、reglarのreg)なのです。
どの単語もよくわからないと思いますが、特に正規表現についてはどこかの機会で
紹介していきたいと思います。
今はstr_replaceとpreg_replaceは文字列の置換という意味で似ていると
思っていて下さい。以下では2つの違いの1つを紹介します。
「竹」は$mojiの中に複数ありますが、str_replaceでは全ての「竹」を置換します。
全部置換されるのは困る、最初の1回だけにして欲しいという場合は
str_replace関数では対応することができません。
しかし、preg_replaceでは置換回数を指定できます。
サンプルプログラムをみてみましょう。
<?php $moji = "隣の竹やぶに竹立てかけたのは、竹立てかけたかったから竹立てかけたのさ"; echo preg_replace("/竹/", "梅", $moji,1); //1回だけ置換して欲しい
実行結果を見ると、1つ目の「竹」だけが「梅」に置換されているのが
わかると思います。
preg_replace(/検索する文字列/,置換後の文字列,置換したい文字列,置換したい回数)
とすることで置換したい回数を指定できます。
指定しない場合は「全部」=無制限ということになります。