※このサンプルの解説は、「CGI(Perl)の解説」をすべて読み終えてる方を前提としています。
後になるほど省略されている場合がありますのでできるだけ順番に読んでください。
また、実行に際しては、サーバーでPHPが利用できる事を前提に解説しています。
■ 文字列の検索と置換
今回は文字列の検索と置換を解説します。
- strpos((対象文字列), (検索文字列), (開始位置))
-
文字列中内の指定した文字列が最初に見つかった位置を返す。
見つからなかった場合、「FALSE」を返します。
「開始位置」は省略できます。
- stripos((対象文字列), (検索文字列), (開始位置))
-
「strpos()」関数とほぼ同義ですが、大文字小文字を区別しません。
- strrpos((対象文字列), (検索文字列))
-
文字列中内の指定した文字列が最後に見つかった位置を返す。
見つからなかった場合、「FALSE」を返します。
「開始位置」は省略できます。
- strripos((対象文字列), (検索文字列))
-
「strpos()」関数とほぼ同義ですが、大文字小文字を区別しません。
- str_replace((検索文字列), (置換文字列), (対象文字列))
-
文字列中内の指定した文字列を別の文字列に置換する。
見つからなかった場合、「FALSE」を返します。
- str_ireplace((検索文字列), (置換文字列), (対象文字列))
-
「str_replace()」関数とほぼ同義ですが、大文字小文字を区別しません。
※「stripos()」、「strripos()」、「str_ireplace()」は、「PHP5」以上の命令です。
上記の関数は言葉で説明するよりサンプルを見てもらったほうが解かりやすいと思います。
- 【 解 説 】
-
まず、文字列「abcdefg」内に「de」が存在するかチェックするには次のように記述します。
$pos0 = strpos("abcdefg", "de");検索位置を4文字目から開始したい場合は次のように記述します。
$pos0 = strpos("abcdefg", "de", 3);同様の処理で大文字小文字を区別したくない場合のサンプルは次のようなものです。
$pos0 = stripos("ABCDEFG", "de"); $pos0 = stripos("ABCDEFG", "de", 3);同じような文字列が複数回見つかる場合、最後に見つかった位置を調べるには「strrpos()」関数を使い次のように記述します。
$pos0 = strrpos("AABBCCAABBCCAABBCC", "BB");同様の処理で大文字小文字を区別したくない場合のサンプルは次のようなものです。
$pos0 = strripos("AABBCCAABBCCAABBCC", "bb");ある文字列中の「BB」を「XX」に置換したい場合は次のように記述します。
$str0 = str_replace("AABBCCAABBCCAABBCC", "BB", "XX");同様の処理で大文字小文字を区別したくない場合のサンプルは次のようなものです。
$str0 = str_ireplace("AABBCCAABBCCAABBCC", "bb", "XX");
上記の命令を確認するため次のようなサンプルを作ってみました。
- 【記述サンプル】
- <?php print <<< END_DOC <HTML> <HEAD> <title>文字列の検索と置換</title> </HEAD> <BODY> END_DOC; $str0 = "abcdefg"; if (strpos($str0, "ed") === FALSE) print "見つからなかった<br>\n"; print "--------------------<br>\n"; $pos0 = strpos($str0, "de"); print "見つかった位置 de:$pos0<br>\n"; $pos0 = strpos($str0, "de", 3); print "見つかった位置 de-3:$pos0<br>\n"; $pos0 = strpos($str0, "de", 4); print "見つかった位置 de-4:$pos0<br>\n"; print "--------------------<br>\n"; $str0 = "AABBCCAABBCCAABBCC"; $pos0 = strrpos($str0, "BB"); print "見つかった位置 de:$pos0<br>\n"; print "--------------------<br>\n"; $str0 = "AABBCCAABBCCAABBCC"; $str0 = str_replace("BB", "XX", $str0); print "BB → XX:$str0<br>\n"; print <<< END_DOC </BODY> </HTML> END_DOC;