strpos()関数は第1引数の文字列内を検索し、第2引数の文字列が最初に現れる位置を返します。strrpos()関数は第2引数の文字列が最後に現れる位置を返します。返される値は1文字目を「0」、2文字目を「1」としてカウントします。
検索文字列が見つからなかった場合は、どちらの関数も長さ=0の文字列「""」を返します。この返り値をstrlen()関数に渡して、その返り値が0かどうかで検索結果を判断できます(例3)。なお、「strpos()関数またはstrrpos()関数の返り値がFalseの場合は検索文字が見つからなかった」と判断することもできますが、環境によっては正確でない場合もあります。
例4と例5は、どちらも「p」という文字を検索します。strpos()関数は先頭から探すため、「Hyper」の「p」の位置が返されます。strrpos()関数は後ろから前へ探すため、「processor」の「p」の位置が返されます。
なお、strrpos()関数は文字列の後ろから探しますが、返す値はstrpos()関数と同じく「先頭から数えた位置」です。例6と例7では「Hyper」は1つしかないので、この場合は同じ値が返されます。
<?php header("Content-type: text/html; charset=utf-8"); $data = "PHP:Hypertext Preprocessor"; //先頭からPHPを検索 echo strpos($data, "PHP") . "<br>"; //先頭からtextを検索 echo strpos($data, "text") . "<br>"; //先頭からMySQLを検索 echo strpos($data, "MySQL") . "→"; echo "検索結果の長さ" . strlen(strpos($data, "MySQL")) . "<br>"; echo strpos($data, "MySQL") ? "発見" : "見つからない" . "<br>"; //先頭からpを検索 echo strpos($data, "p") . "<br>"; //後ろからpを検索 echo strrpos($data, "p") . "<br>"; //先頭からHyperを検索 echo strpos($data, "Hyper") . "<br>"; //後ろからHyperを検索 echo strrpos($data, "Hyper") . "<br>"; ?>