2015年11月6日

PHP 回数を指定した文字列の置換 preg_replace

«
»

Pocket

今回も「文字列の置換」を紹介しますが、
str_replaceではなく、preg_replaceという関数を紹介します。
まずはサンプルプログラムをみてみましょう。
 


<?php

$moji = "隣の竹やぶに竹立てかけたのは、竹立てかけたかったから竹立てかけたのさ";

echo preg_replace("/竹/", "梅", $moji); // 「竹」を「梅」に変換して表示

実行結果

PHP preg_replace

解説

前回のstr_replace同様、「竹」を「梅」に変換することができました。
preg_replace(/検索する文字列/,置換後の文字列,置換したい文字列);
という形式で利用します。検索する文字列の前後に「/」がつくのが特徴です。
 
と書きましたが、実はpreg_replaceにはもっと深い意味があります。
それはpregという言葉の意味に現れています。ここでは詳しく説明しませんが、
pregとは「perlというプログラミング言語と互換性のある正規表現(regular expression)」
という言葉の略(perlのpと、reglarのreg)なのです。
 
どの単語もよくわからないと思いますが、特に正規表現についてはどこかの機会で
紹介
していきたいと思います。
今はstr_replaceとpreg_replaceは文字列の置換という意味で似ていると
思っていて下さい。以下では2つの違いの1つを紹介します。

preg_replaceは置換回数を指定できる

「竹」は$mojiの中に複数ありますが、str_replaceでは全ての「竹」を置換します。
 
全部置換されるのは困る、最初の1回だけにして欲しいという場合は
str_replace関数では対応することができません
 
しかし、preg_replaceでは置換回数を指定できます
サンプルプログラムをみてみましょう。

 


<?php

$moji = "隣の竹やぶに竹立てかけたのは、竹立てかけたかったから竹立てかけたのさ";

echo preg_replace("/竹/", "梅", $moji,1); //1回だけ置換して欲しい


実行結果

スクリーンショット 2015-11-06 6.11.15

解説

実行結果を見ると、1つ目の「竹」だけが「梅」に置換されているのが
わかると思います。
 
preg_replace(/検索する文字列/,置換後の文字列,置換したい文字列,置換したい回数)
とすることで置換したい回数を指定できます。
指定しない場合は「全部」=無制限ということになります。

まとめ

・preg_replace(/検索する文字列/,置換後の文字列,置換したい文字列)で文字列の置換ができる
・preg_replace(/検索する文字列/,置換後の文字列,置換したい文字列,置換したい回数)
 置換回数を指定できる
・正規表現について詳しく知りたい方は「PHP 正規表現」などで検索して下さい。

【関連する記事】