関数の概要
PHPの strrpos 関数は、指定した文字列の中から検索したい文字列の「最後に出現する位置」を取得するための関数です。文字列の中で最後に該当の文字や部分文字列が現れる位置を知りたい場合に使います。たとえば、ファイルパスやURLの最後のスラッシュの位置を探すなどの用途に便利です。
パラメータの説明
haystack(string) : 検索対象の文字列。needle(string) : 検索したい文字列。または文字。offset(int) : 検索開始位置を指定するオプションのパラメータ。文字列の開始位置からのオフセット値で、負の値も指定可能です。省略すると文字列の最後から検索します。
戻り値
needle が haystack に見つかった場合、文字の位置を示す整数(0から始まるインデックス)を返します。見つからなかった場合は FALSE を返します。なお、0は先頭の位置も意味するので、「見つからなかった」の判定は厳密に === FALSE で行う必要があります。
使用例
基本的な使い方
<?php
$text = "Hello, world! Hello, PHP!";
$pos = strrpos($text, "Hello");
var_dump($pos);
?>
この例では文字列の中で「Hello」が最後に出現する位置を調べます。結果は19(「Hello, PHP!」の先頭位置)となり、最後の「Hello」の位置がわかります。
ファイルパスからファイル名だけを取得
<?php
$path = "/var/www/html/index.php";
$pos = strrpos($path, "/");
$fileName = substr($path, $pos + 1);
echo $fileName; // 結果: index.php
?>
ファイルパスの最後のスラッシュ(/)の位置を探し、その直後から文字列を切り出すことでファイル名部分だけを取得しています。
offsetパラメータを使った例
<?php
$text = "abcdefabc";
$pos1 = strrpos($text, "a"); // 最後の 'a' の位置
$pos2 = strrpos($text, "a", -5); // -5文字から前方に向けて検索
var_dump($pos1); // 6
var_dump($pos2); // 0
?>
ここでは offset に負の値を指定し、文字列の終端から逆方向に検索範囲を制限しています。最初の呼び出しは最後の「a」が6番目、次は-5文字目(文字列長9の位置から数えて4文字目)以降に最も近い先頭の「a」を見つけています。
関連する関数
strpos– 最初に出現する位置を検索するstrripos– 大文字・小文字を区別せずに最後の位置を検索stripos– 大文字・小文字を区別せずに最初の位置を検索substr– 文字列の一部を取得するときに便利
まとめ
strrpos は文字列の中で指定した文字列が最後に現れる位置を取得できるPHP関数です。文字列操作では非常に役立つ関数で、ファイル名や拡張子の取得、最後の特定文字の検索など幅広い場面で使えます。
特に見つからなかった場合は FALSE が返されるため、位置0と混同しないように厳密な比較 (=== FALSE) を行うことが重要です。
初心者の方も今回の例を参考に使いこなし、効率的な文字列処理ができるようになりましょう。
